https://www.acmicpc.net/problem/10820
10820번: 문자열 분석
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있
www.acmicpc.net
나의 코드
대문자, 소문자, 숫자를 리스트에 넣고 있는지 없는지 확인하는 방식을 사용했다.
import sys
big = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
small = list("abcdefghijklmnopqrstuvwxyz")
num = list("1234567890")
while True:
try:
input = sys.stdin.readline().rstrip()
result = [0] * 4
for i in input:
if i in small:
result[0] += 1
elif i in big:
result[1] += 1
elif i in num:
result[2] += 1
else:
result[3] += 1
print(*result)
except EOFError:
break
출력초과....
출력 초과(EOFError)가 발생하는 이유는, 입력을 받는 부분에서 입력이 끝나지 않고 계속해서 입력을 기다리기 때문입니다. 라고 뤼센세가 알려주셨다..
2차
import sys
big = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
small = list("abcdefghijklmnopqrstuvwxyz")
num = list("1234567890")
while True:
input = sys.stdin.readline().rstrip()
if not input:
break
result = [0] * 4
for i in input:
if i in small:
result[0] += 1
elif i in big:
result[1] += 1
elif i in num:
result[2] += 1
else:
result[3] += 1
print(*result)
틀렸다고 뜬다.. 어째서인가 예제를 다시 입력하니
3번째 예제 입력에서 뒤에 공백이 쭉 있었던 것...!
2번 예제까지만 확인한건 어떻게 알고... rstrip()을 넣은것이 문제였다
그렇게 또또 수정 rstrip() -> rstrip('\n')
import sys
big = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
small = list("abcdefghijklmnopqrstuvwxyz")
num = list("1234567890")
while True:
input = sys.stdin.readline().rstrip('\n')
if not input:
break
result = [0] * 4
for i in input:
if i in small:
result[0] += 1
elif i in big:
result[1] += 1
elif i in num:
result[2] += 1
else:
result[3] += 1
print(*result)
정답!!
다른 분들은 나처럼 리스트가 아닌 isupper(), islower(), isdigit()을 활용하시더라.... 참고하시길
'공부 > 알고리즘' 카테고리의 다른 글
[알고리즘][백준] 10824번 네 수 - 파이썬(python) 풀이 (0) | 2024.02.27 |
---|---|
[알고리즘][백준] 11655번 ROT13 - 파이썬(python) 풀이 (0) | 2024.02.27 |
[알고리즘][백준] 10808번 알파벳 개수 - 파이썬(python) 풀이 (1) | 2024.02.26 |
[알고리즘][백준] 1918번 후위 표기식 - 파이썬(python) 풀이 (0) | 2024.02.26 |
[알고리즘][백준] 1935번 후위 표기식2 - 파이썬(python) 풀이 (1) | 2024.02.25 |