반응형
문제
설명
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.
예시 입력 1
StuDY
예시 출력 1
sTUdy
풀이
import java.util.Scanner;
public class JAVA1 {
public static Character[] solution(String s){
Character[] answer = new Character[s.length()];
int i=0;
for(char c : s.toCharArray()){
if(c >= 'A' && c <= 'Z'){
answer[i++] = Character.toLowerCase(c);
} else if(c >= 'a' && c <= 'z'){
answer[i++] = Character.toUpperCase(c);
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
for(Character c : solution(s)){
System.out.print(c);
}
}
}
처음에는 그냥 생각나는 대로 코딩을 해봤는데 뭔가 더 간결한 다른 방법이 있을 거 같아서
고민하고 더 찾아봤다.
import java.util.Scanner;
public class JAVA1 {
public static String solution(String s){
String answer = "";
for(char c: s.toCharArray()){
if(Character.isUpperCase(c))
answer += (char)(c+32);
else answer += (char)(c-32);
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
System.out.println(solution(s));
}
}
그래서 이런 방식으로도 코딩을 해봤는데 달라진 점은
- solution 함수에서 Character대신 String을 사용한 점
- isUpperCase(c) 함수를 통해 대문자인지 확인하기
- toUpperCase 등의 함수가 아닌 아스키 코드를 이용해 대문자 소문자 변환하기
정도가 있는 것 같다.

이런식으로 잘 나온다!
알아두어야 할 것들
Character.isUpperCase(c)
대문자인지 확인하는 함수이다.
true false로 반환한다
아스키코드
A는 65로 시작하고 Z는 90으로 끝난다.
a는 97로 시작하고 z는 122로 끝난다.
대문자와 소문자는 32가 차이 난다.
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
| [SWEA]1926. 간단한 369게임 (0) | 2025.04.28 |
|---|---|
| [SWEA]21425. += (0) | 2025.04.28 |
| 04. 단어 뒤집기 (0) | 2025.04.25 |
| 03. 문장 속 단어 (0) | 2025.04.24 |
| 01. 문자 찾기 (0) | 2025.04.24 |