[BOJ_10820] 문자열 분석
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
입력
첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.
출력
첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.
예제 입력 1 복사
This is String
SPACE 1 SPACE
S a M p L e I n P u T
0L1A2S3T4L5I6N7E8
예제 출력 1 복사
10 2 0 2
0 10 1 8
5 6 0 16
0 8 9 0
풀면서 느낀점
문제를 보면 N번째 줄까지라고 해놓고 N개를 주지 않아서 입력이 언제까지 들어오는줄 모른다 .
문제의 로직보다 EOF 처리를 어떻게할지 고민하는게 더 오래 걸렸던 문제였다.
파이썬의 경우에는 EOF 처리를 두가지 방법으로 할 수 있는데 try ~ except EOFError 로 문자열이 들어오지 않을때 break 문을 걸어서 강제로 종료 시키는 방법
두번째로는 input을 불러올때 readline 까지 가져오는 방법이 있다
line = sys.stdin.readline().rstrip('\n')
if not line :
~~~~
결론적으로는 난 첫번째 방법을 썼지만 pycharm 인터프리터내에서 EOF를 못잡아서 왜 안되지 고민했는데... 백준은 통과가 되었다 (?)
아 코드설명은 아스키코드에 따라 딕셔너리로 넣는 방법을 썼다
나의 코드
while True:
try:
words = input()
except EOFError:
break
word = {
'lower': 0,
'upper': 0,
'number': 0,
'space': 0,
}
for i in words:
if 'A' <= i <= 'Z':
word['upper'] += 1
elif 'a' <= i <= 'z':
word['lower'] += 1
elif i == ' ':
word['space'] += 1
else:
word['number'] += 1
print(*word.values())
Author And Source
이 문제에 관하여([BOJ_10820] 문자열 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimyunbin/BOJ10820-문자열-분석저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)