Post

[Programmers] #181949 - 대소문자 바꿔서 출력하기 [Java][C++][Python]

입력받은 문자열의 대소문자를 서로 바꿔 출력하는 워밍업 문제.

[Programmers] #181949 - 대소문자 바꿔서 출력하기 [Java][C++][Python]

문제 링크


1. 아이디어

알파벳으로만 이루어진 문자열을 입력받아 대문자는 소문자로, 소문자는 대문자로 바꿔 출력하면 되는 문제다. 아스키코드에서 알파벳 대문자와 소문자는 32만큼 차이나므로, 각 문자의 코드값에 32를 더하거나 빼는 방식으로 대소문자를 반전시킬 수 있다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(N)$

($N$ = 입력 문자열의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.*;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        for (char c : br.readLine().toCharArray()) {
            if ('a' <= c && c <= 'z') {
                System.out.print((char) (c - 'a' + 'A'));
            } else {
                System.out.print((char) (c - 'A' + 'a'));
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    string s;
    cin >> s;

    for (char c : s) {
        if ('a' <= c && c <= 'z') {
            cout << (char)(c - 'a' + 'A');
        } else {
            cout << (char)(c - 'A' + 'a');
        }
    }
}
1
2
3
4
5
import sys

input = sys.stdin.readline

print(input().swapcase())

Python은 대소문자를 반전하는 swapcase() 내장 메서드를 제공해 Java/C++처럼 아스키코드를 직접 계산할 필요가 없다.


This post is licensed under CC BY 4.0 by the author.