Computer Science/Algorithm
[Inflearn] 대소문자 변환
코딩맛
2022. 10. 24. 22:34
인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.
섹션1. String(문자열)의 2. 대소문자 변환 강의편 입니다.
설명
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.
import java.util.Scanner;
public class 대소문자_변환 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String text = sc.next();
System.out.print(solution(text));
}
public static String solution(String str) {
String ans = "";
for(char s : str.toCharArray()) {
if( s >= 'A' && s <= 'Z') {
s+=32;
}else if (s >='a' && s <= 'z'){
s-=32;
}
ans += s;
}
return ans;
}
}
>>해설
Scanner 함수를 이용하여 문자열을 입력 받습니다. 해당 문자열을 solution 메소드의 매개변수로 전달합니다.
받은 문자열을 문자 배열로 변환시켜서 문자형 타입의 변수 s에 하나씩 담아서 반복문을 돕니다.
반복문을 돌면서 대문자를 소문자로 변환, 소문자를 대문자로 변환하여야 합니다.
여기서 중요한 키포인트는 ascii 코드표에서 대문자는 65~90이고 소문자는 97~122로 32만큼 차이가 납니다.
그렇기 때문에 대문자에서 32를 더하면 소문자, 소문자에서 32를 빼면 대문자가 되는 것을 알 수 있습니다.
변수 s에 변환 시킨 값을 누적시켜서 호출시킨 main()으로 리턴하여 출력합니다.