문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
난이도
Bronze 2
입력 조건
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력 조건
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
입력 예시
This is String
SPACE 1 SPACE
S a M p L e I n P u T
0L1A2S3T4L5I6N7E8
출력 예시
10 2 0 2
0 10 1 8
5 6 0 16
0 8 9 0
sys 사용 코드
# sys 사용 ver
import sys
while True:
low, top, digit, space = 0,0,0,0
s = sys.stdin.readline().rstrip('\n') # 개행문자 제거
if not s:
break
for i in range(len(s)):
if s[i].islower() == True:
low +=1
elif s[i].isupper() == True:
top +=1
elif s[i].isdigit() == True:
digit +=1
elif s[i] == " ":
space +=1
print("%s %s %s %s"%(low,top,digit,space))
input() 사용 코드
# input() 사용 ver
while True:
try :
low, top, digit, space = 0,0,0,0
s = input()
for i in range(len(s)):
if s[i].islower() == True:
low +=1
elif s[i].isupper() == True:
top +=1
elif s[i].isdigit() == True:
digit +=1
elif s[i] == " ":
space +=1
print("%s %s %s %s"%(low,top,digit,space))
except EOFError :
break
느낀 점
문제에서는 몇 개의 테스트 케이스가 주어진다고 정해지지 않았기 때문에 EOF 검사를 해줘야 한다.
EOF 검사를 하는 두 가지 방법이 있다.
- sys.stdin.readline()으로는 입력이 있었는지 None인지 확인하면 된다.
- input()을 사용했다면, try ~ except 문으로 EOFError를 처리해주자.