반응형
문제
영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다.
출력
첫째 줄에 입력으로 주어진 단어에서 대문자는 소문자로, 소문자는 대문자로 바꾼 단어를 출력한다.
소문자와 대문자의 아스키코드의 차이가 32인 것을 활용한다. 예를 들어, A에서 a로 만들려면 32를 더하고 반대의 경우엔 빼면 된다.
대문자 : 65<= char <=90, 소문자 : 97<= char <= 122 이면 소문자이다.
또는
'A'<= char <='Z' , 'a'<=char <'z'
내가 작성한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
char[] arr = input.toCharArray();
for (int i = 0; i < arr.length; i++) {
if(arr[i] >= 65 && arr[i] <= 90) {
arr[i] += 32;
} else if(arr[i] >= 97 && arr[i] <= 122) {
arr[i] -= 32;
}
}
String output = String.valueOf(arr);
System.out.println(output);
}
}
▶ char[] arr = input.toCharArray() : String 타입의 input변수를 문자형 배열로 변환해 준다.
▶ if 문 : 배열의 요소가 65보다 크고 90보다 작다면 32를 더해준다. (대문자 -> 소문자)
▶ else if 문 : 배열의 요소가 97보다 크고 122보다 작다면 32를 빼준다. (소문자 -> 대문자)
▶ String output = String.valueOf(arr) : 문자형 배열 arr을 문자열로 변환해 준다.
다른 풀이 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if ('A' <= ch && ch <= 'Z')
System.out.print((char)('a' + ch - 'A'));
else System.out.print((char)('A' + ch - 'a'));
}
}
}
▶ if 문 : char형 ch가 'A'와 'B' 사이에 있다면(대문자 뽑아내기) ch에 'A'를 빼주고 'a'를 더해준다.
ex) ch가 'C'라면 'C' - 'A'는 67 - 65 이므로 2이다. 2에 'a'를 더해주면 2 + 97 은 99이므로 'c'가 된다.
소문자 출력도 마찬가지이다.
입출력 결과
'ALGORITHM > 백준' 카테고리의 다른 글
[JAVA] 백준 1152 - 단어의 개수 (1) | 2024.03.23 |
---|---|
[JAVA] 백준 13223 - 소금 폭탄 (0) | 2024.03.07 |
[JAVA] 백준 1543 - 문서 검색 (0) | 2024.03.07 |
[JAVA] 백준 1157 - 단어 공부 (0) | 2024.03.06 |
[JAVA] 백준 1919 - 애너그램 만들기 (1) | 2024.03.06 |