PS(Java)/인프런 강의 문제

[PS] 인프런 강의 - 문자열 2. 대소문자 변환

UL :) 2022. 10. 10. 00:28

 

문제

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

 

▣ 입력설명
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
문자열은 영어 알파벳으로만 구성되어 있습니다.

 

▣ 출력설명

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

 

▣ 입력예제 1
StuDY

 

▣ 출력예제 1
sTUdy

풀이

알파벳의 아스키코드

 

A~Z = 65~90

a~z = 97~122

 

97-65 = 32 차이남

코드

풀이 1)

import java.util.Scanner;

public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = in.next();
		char[] c = s.toCharArray();
		
		//대문자 <-> 소문자
		for(int i=0; i<c.length; i++) {
			if(Character.isUpperCase(c[i])) {
				c[i] = Character.toLowerCase(c[i]);
			}
			else c[i] = Character.toUpperCase(c[i]);
		}
		
		System.out.print(c);
    }
}

풀이 2) 아스키 코드 사용

import java.util.Scanner;

public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = in.next();
		String answer = "";
		
		//대문자 <-> 소문자
		for(char x : s.toCharArray()) {
			if(x >= 97 && x<= 122) answer += (char)(x-32);
			else answer+= (char)(x+32);  
		}
		
		System.out.print(answer);
    }
}