본문 바로가기

프로그래머스 코딩(자바)/Level 0 날짜별 풀이

프로그래머스/코딩 기초 트레이닝 Day1 - 대소문자 바꿔서 출력하기

728x90

[문제]

문제 설명 : 영어 알파벳으로 이루어진 문자열 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) : 매개변수로 주어진 문자를 대문자로 반환합니다.

 

[실행 결과]

 

728x90