오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 String Q02_대소문자 변환 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 String Q02_대소문자 변환

chan_96 2022. 1. 23. 00:50
728x90
설명

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.


입력

첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.

문자열은 영어 알파벳으로만 구성되어 있습니다.


출력

첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.




예시 입력1


예시 출력

StuDY sTUdy

 

코드

내가 입력한 코드

package String;

import java.util.Scanner;

public class Q02 {
	public String solution(String str) {
		String answer = "";
		char[] c = str.toCharArray();
		
		for (int i = 0; i < c.length; i++) {
			if((int)c[i] <= 90) {
				c[i] = (char)((int)c[i]+32);
			}else {				
				c[i] = (char)((int)c[i]-32);
			}
		}
		for (int i = 0; i < c.length; i++) {
			answer += ""+c[i];
		}
		return answer;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Q02 main = new Q02();
		
		String str = sc.next();
		
		System.out.println(main.solution(str));
	}
}



해설 코드

import java.util.*;
class Main {	
	public String solution(String str){
		String answer="";
		for(char x : str.toCharArray()){
			if(Character.isLowerCase(x)) answer+=Character.toUpperCase(x);
			else answer+=Character.toLowerCase(x);

		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.print(T.solution(str));
	}
}
import java.util.*;
class Main {	
	public String solution(String str){
		String answer="";
		for(char x : str.toCharArray()){
			if(x>=97 && x<=122) answer+=(char)(x-32);
			else answer+=(char)(x+32);
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.print(T.solution(str));
	}
}

 

 

풀이 및 정리 

해설 코드로는 2가지 방법이 있다.
아스키 코드를 사용한 방법과 소문자, 대문자인지 판별하는 Character.isLowerCase(), Character.isUpperCase() 메서드사용 방법이 있다.

Character.isLowerCase( ) => 반환 타입이 boolean형


대문자 아스키코드
A(65) ~ Z(90)

소문자 아스키코드
a(97) ~ z(122)

=> 대문자와 소문자 아스키코드 차이 32
728x90
Comments