Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 10820번- '문자열 분석' (PYTHON 풀이) 본문
문제:

문자열을 입력받고, 소문자, 대문자, 숫자, 공백의 개수를 예제 출력 형식에 맞춰 출력하면 되는 문제이다.
풀이:
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문을 위 코드로 바꾸면 더 간단하게 풀 수 있다. 각 함수는 해당 값이 소문자인지, 대문자인지, 숫자인지, 공백인지를 판단해준다.
역시 파이썬답다.
'CODING 💻' 카테고리의 다른 글
| 백준 4796번- '캠핑' (PYTHON 풀이) (0) | 2026.01.18 |
|---|---|
| 백준 10156번- '과자' (PYTHON 풀이) (0) | 2026.01.17 |
| 백준 2875번- '대회 or 인턴' (PYTHON 풀이) (0) | 2026.01.15 |
| 백준 10768번- '특별한 날' (PYTHON 풀이) (0) | 2026.01.14 |
| 백준 2476번- '주사위 게임' (PYTHON 풀이) (0) | 2026.01.13 |
