[문제]
문제 설명 : 영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환
해서 출력하는 코드를 작성해 보세요.
제한사항
1 ≤ str의 길이 ≤ 20
str은 알파벳으로 이루어진 문자열입니다.
입출력 예
입력 #1
aBcDeFg
출력 #1
AbCdEfG
※2023년 05월 03일 제한사항이 수정되었습니다.
[풀이]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.Scanner; public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(char ch : a.toCharArray()) {
if(ch>='a' && ch<='z') {
System.out.print((char)(ch-32));
}else if(ch>='A' && ch<='Z') {
System.out.print((char)(ch+32));
}else {
System.out.print(ch);
}
}
System.out.println();
sc.close();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.Scanner; public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(char ch : a.toCharArray()) {
if(Character.isLowerCase(ch)) {
System.out.print(Character.toUpperCase(ch));
}else if(Character.isUpperCase(ch)) {
System.out.print(Character.toLowerCase(ch));
}else {
System.out.print(ch);
}
}
System.out.println();
sc.close();
}
}
|
[설명]
문자열.toCharArray() 메서드는 문자열을 1글자씩 잘라서 char 배열로 만들어 줍니다.
for 만복문을 이용하여 1글자씩 반복합니다.
for(char ch : a.toCharArray()) {
여기의 내용이 반복됩니다.
}
if 조건문을 이용하여 판단을 해서 소문자이면 대문자로 변경을하여 출력하고 대문자이면 소문자로 변환하여 출력합니다.
if(ch>='a' && ch<='z') { // 소문자라면
// 소문자 - 32 = 대문자 : 문자를 정수와 연산하면 결과가 정수이므로 문자로 변환한다.
Syste m.out.print((char)(ch-32));
}else if(ch>='A' && ch<='Z') { // 대문자라면
// 대문자 + 32 = 소문자 : 문자를 정수와 연산하면 결과가 정수이므로 문자로 변환한다.
System.out.print((char)(ch+32));
}else { // 대소문자가 아니라면
System.out.print(ch); //그냥 출력한다.
}
문자 'A'의 ASCII코드값은 65이고 문자 'a'의 ASCII코드값은 97입니다.
문자와 정수를 +/- 연산을 하면 문자가 코드값으로 변경되어 계산됩니다.
두 문자의 차이가 32이므로
'A' + 32 = 65 + 32 = 97이 됩니다. 문자로 바꾸면 'a'가 됩니다.
'B' + 32 = 66 + 32 = 98이 됩니다. 문자로 바꾸면 'b'가 됩니다.
'C' + 32 = 67 + 32 = 99이 됩니다. 문자로 바꾸면 'c'가 됩니다.
마찬가지로
'a' - 32 = 97 - 32 = 65이 됩니다. 문자로 바꾸면 'A'가 됩니다.
'b' - 32 = 98 - 32 = 66이 됩니다. 문자로 바꾸면 'B'가 됩니다.
'c' - 32 = 99 - 32 = 67이 됩니다. 문자로 바꾸면 'C'가 됩니다.
[다른 풀이]
Character 래퍼 클래스는 기본자료형인 char형을 한번 감싸서 만든 클래스입니다.
문자를 다룰때 아주 유용하게 사용되는 클래스 입니다.
자바의 메서드명이 is나 has로 시작되면 리턴 값은 boolean입니다.
Character.isLowerCase(ch) : 매개변수로 주어진 문자가 소문자이면 true를 대문자이면 false를 반환합니다.
Character.isUpperCase(ch) : 매개변수로 주어진 문자가 대문자이면 true를 소문자이면 false를 반환합니다.
자바의 메서드명이 to로 시작되면 리턴 값은 to뒤의 자료로 변경합니다.
Character.toLowerCase(ch) : 매개변수로 주어진 문자를 소문자로 반환합니다.
Character.toUpperCase(ch) : 매개변수로 주어진 문자를 대문자로 반환합니다.
[실행 결과]
'프로그래머스 코딩(자바) > Level 0 날짜별 풀이' 카테고리의 다른 글
프로그래머스/코딩 기초 트레이닝 Day2 - 문자열 붙여서 출력하기 (1) | 2023.05.24 |
---|---|
프로그래머스/코딩 기초 트레이닝 Day2 - 덧셈식 출력하기 (0) | 2023.05.24 |
프로그래머스/코딩 기초 트레이닝 Day1 - 특수문자 출력하기 (0) | 2023.05.24 |
프로그래머스/코딩 기초 트레이닝 Day1 - 문자열 반복해서 출력하기 (0) | 2023.05.24 |
프로그래머스/코딩 기초 트레이닝 Day1 - a와 b 출력하기 (1) | 2023.05.24 |