jyamethyst21 님의 블로그

백준 10820번- '문자열 분석' (PYTHON 풀이) 본문

CODING 💻

백준 10820번- '문자열 분석' (PYTHON 풀이)

jyamethyst21 2026. 1. 16. 09:28

문제:

 

문자열을 입력받고, 소문자, 대문자, 숫자, 공백의 개수를 예제 출력 형식에 맞춰 출력하면 되는 문제이다.

 

풀이:

while True:
    try:
        inp = input()
    except EOFError:
        break

    lower_ = 0
    upper_ = 0
    number = 0
    blank = 0

    for i in inp:
        code = ord(i)
        if 97 <= code <= 122:
            lower_ += 1
        elif 65 <= code <= 90:
            upper_ += 1
        elif 48 <= code <= 57:
            number += 1
        elif code == 32:
            blank += 1

    print(lower_, upper_, number, blank)

문제를 보자마자 아스키코드를 사용해야겠다고 생각했다.

문자열로 입력을 받으면 문자, 숫자, 공백을 구분하는 게 어렵기 때문에 이 방법이 가장 간단하지 않나 싶다.

입력받을 때 에러가 나지 않는 이상 계속 출력을 하도록 되어있으므로 while문을 활용하였고, 입력값의 각 자리에 대해 아스키로 전환하고 이 값이 소문자, 대문자, 숫자, 공백의 범위에 존재하는지 파악해서 그렇다면 해당 변수를 1씩 더하도록 하였다.

for i in inp:
    if i.isupper():
        upper_ += 1
    elif i.islower():
        lower_ += 1
    elif i.isdigit():
        number += 1
    elif i.isspace():
        blank += 1

제출하고 좀 더 쉬운 방법이 있나 싶어 서치하였다.

for문을 위 코드로 바꾸면 더 간단하게 풀 수 있다. 각 함수는 해당 값이 소문자인지, 대문자인지, 숫자인지, 공백인지를 판단해준다.

역시 파이썬답다.