백준 2744번(Java)

이지예·2026년 3월 30일

개발

목록 보기
2/58

🧩 백준 2744번 : 대소문자 바꾸기 (Java)

📌 문제 설명

문자열이 주어졌을 때, 대문자는 소문자로, 소문자는 대문자로 변환하는 문제이다.


💡 접근 방법

문자열의 각 문자를 하나씩 확인하면서,
해당 문자가 대문자인지 소문자인지 판별한 후 변환하면 된다.

자바에서는 문자열을 바로 수정할 수 없기 때문에,
toCharArray()를 사용해 char 배열로 변환한 뒤 처리했다.


🔍 핵심 로직

  • 소문자: 'a'(97) ~ 'z'(122)
  • 대문자: 'A'(65) ~ 'Z'(90)

👉 아스키 코드 기준으로

  • 소문자 → 대문자: -32
  • 대문자 → 소문자: +32

💻 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String a = scanner.nextLine();

        char[] res = a.toCharArray();

        for (int i = 0; i < a.length(); i++) {
            if (97 <= res[i] && res[i] <= 122) {
                res[i] = (char)(res[i] - 32);
            } else if (65 <= res[i] && res[i] <= 90) {
                res[i] = (char)(res[i] + 32);
            }
        }

        System.out.println(new String(res));
    }
}

⚠️ 주의할 점

  • 문자열은 불변(immutable)이기 때문에 직접 수정이 불가능하다
  • 반드시 char[]로 변환 후 처리해야 한다
  • 출력 시 System.out.println(res)도 가능하지만
    new String(res)로 명확하게 변환하는 것이 좋다

✨ 다른 풀이 방법 (참고)

자바에서 제공하는 메서드를 활용하면 더 간단하게도 풀 수 있다.

for (char c : a.toCharArray()) {
    if (Character.isLowerCase(c)) {
        System.out.print(Character.toUpperCase(c));
    } else {
        System.out.print(Character.toLowerCase(c));
    }
}

👉 가독성이 더 좋은 코드라고 한다.


📝 정리

  • 아스키 코드를 활용한 기본 문자열 처리 문제
  • char 단위로 접근하는 연습에 적합
  • 자바의 문자열 특성을 이해하는 것이 핵심

profile
github: @dlwldP

0개의 댓글