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

이승욱·2026년 3월 9일

자바알고리즘

목록 보기
5/33

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

문제 설명

영어 대문자와 소문자로 이루어진 문자열이 주어졌을 때

  • 대문자는 소문자로
  • 소문자는 대문자로

바꾸어 출력하는 프로그램을 작성하는 문제이다.

입력

  • 영어 대문자와 소문자로 이루어진 단어
  • 길이: 최대 100

출력

  • 대문자는 소문자로
  • 소문자는 대문자로 변환한 문자열

📥 입력 예시

WrongAnswer

📤 출력 예시

wRONGaNSWER

접근 방법

문자열의 각 문자를 하나씩 검사하면서
대문자인지 소문자인지 판단한 뒤 변환하면 된다.

문자를 검사하는 방법은 두 가지가 있다.

  • ASCII 값을 이용하는 방법
  • Java 내장 메서드를 사용하는 방법

이번 풀이에서는 ASCII 값을 이용한 방법을 사용했다.


핵심 개념

1 ASCII 코드

Java에서 문자(char)는 내부적으로 숫자(ASCII 코드)로 저장된다.

문자ASCII 값
A65
Z90
a97
z122

대문자와 소문자의 차이는 32이다.

a - A = 32

따라서

  • 대문자 → 소문자

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

    문자 - 32

또는 이렇게 표현할 수도 있다.

'a' - 'A'

2 문자열에서 문자 접근

문자열에서 특정 위치의 문자를 가져오는 메서드

char c = input.charAt(i);

3 char 배열

문자를 하나씩 변환하기 위해
결과를 char 배열에 저장한다.

char[] result = new char[input.length()];

Java 풀이 코드

import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String input = sc.nextLine();
        char[] result = new char[input.length()];

        for(int i = 0; i < input.length(); i++) {

            char c = input.charAt(i);

            if(c >= 'a' && c <= 'z') {
                result[i] = (char)(c - ('a' - 'A'));
            } else {
                result[i] = (char)(c + ('a' - 'A'));
            }

        }

        System.out.print(result);

    }

}

시간 복잡도

문자열을 한 번만 순회하므로

O(N)
  • N = 문자열 길이
  • 최대 100이므로 매우 빠르게 수행된다.

정리

이 문제의 핵심은 다음 세 가지이다.

  • 문자를 하나씩 순회한다.
  • ASCII 값 차이(32)를 이용해 대소문자를 변환한다.
  • char 배열에 저장 후 출력한다.

문자열과 문자(char)의 동작 원리를 이해하기 좋은 기초 문자열 문제이다.

profile
아는거 없는 전공자

0개의 댓글