프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 대소문자 바꿔서 출력하기(Java)

Sigfriede 2023. 4. 25. 12:39

  문제 설명

  영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

 

  제한사항

  • 1 <= str의 길이 <= 10
  • str은 알파벳으로 이루어진 문자열입니다.

 

  입출력 예

입력 출력
aBcDeFg AbCdEfg
import java.util.Scanner;
import java.lang.StringBuilder;

public class Solution {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        for (char c: a.toCharArray()) {
            if (c >= 97 && c <= 122) {
                sb.append((char)(c - 32));
            } else {
                sb.append((char)(c + 32));
            }
        } System.out.println(sb.toString());
    }
}

  아스키 코드를 이용하여 풀 수 있는 문제입니다. 문자열의 효율적인 변경을 위하여 StringBuilder를 활용했습니다. for-each문에서 c는 a의 char 배열을 할당 받습니다. if문은 대소문자를 구분하는 역할을 합니다. 97~122는 아스키 코드에서 영어 소문자를 의미합니다(대문자는 65~90). 만약 코드의 숫자가 생각나지 않는다면, (c >= 97 && c <= 122) 대신 (c >= 'a' && c <= 'z')로 작성해도 무방합니다.

  32를 더하거나 뺀다는 행위는 문자의 대소문자를 바꿔주겠다는 것을 의미합니다. 또 아스키 코드를 다루고자 한다면 위 코드와 같이 문자(char) 형태여야 합니다. append 메소드로 sb에 변경된 문자를 추가합니다. sb를 그대로 출력하면 sb의 주소값이 찍히게 되므로 toString()을 통해 문자열로 나오도록 합니다.