[문자열 분석]-10820번
My answer
import sys
result=[0]*4
while(1):
try:
tmp=sys.stdin.readline().rstrip('/n')
if(tmp=""):
break
for i in tmp:
if('a'<=i<='z'):
result[0]+=1
elif('A'<=i<='Z'):
result[1]+=1
elif(i.isdigit()==1):
result[2]+=1
elif(i==" "):
result[3]+=1
print(result[0],result[1],result[2],result[3])
result=[0]*4
except EOFError:
break
Another answer
while 1:
try:x=input();a=b=c=d=0
except:break
for i in x:
if ord(i)<33:d+=1
elif 96<ord(i)<123:a+=1
elif 64<ord(i)<91:b+=1
else:c+=1
print(a,b,c,d)
더보기
요즘 이런경우가 은근 많은 것 같다. 문제 자체는 금방 풀었는데 문제에 해당하는 기본조건을 못맞춰서 틀리는 문제.. 이 문제는 출력초과가 떠서 못풀었다. 이문제는 n을 주어주지 않고 n번쨰 줄까지 문자열을 입력후 문제를 풀고 종료하는 문제라서 이렇게 정확히 몇번하는지 횟수를 정해주지 않은 문제들은 eof를 통해서 문제를 풀어야 된다고 한다. eof 맨날 베껴서 써서 이제 외워야겠다. try, except를 이용해서 처리했는데, 나중에 알고리즘에서 한번 더 다루도록 하겠다. 또 이번에는 eof도 처리했는데 안돌아가서 구글링해보니, 우선 rstrip()을 할때 공백제거가 아닌 개행문자 '\n'을 없애도록 처리해줬고, 아무것도 입력되지 않았을 때 바로 종료하도록 처리해주니까 돌아갔다. 아무것도 입력되지 않을 때는 입력이 끝났다는걸로 인식해야해서 바로 종료해야 하나보다. 내 코드말고 아래 코드는 아스키 코드를 이용해서 소문자,대문자,숫자등을 구분했다. ord()함수를 이용하면 아스키코드로 바꿔주므로 소문자,대문자,숫자에 해당하는 아스키코드로 범위를 만들어서 해결한 것 같다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python/백준] #11656- [접미사 배열] (0) | 2021.12.02 |
---|---|
[Python/백준] #11655- [ROT13] (0) | 2021.12.01 |
[Python/백준] #10809- [알파벳 찾기] (0) | 2021.12.01 |
[Python/백준] #10808 - [알파벳 개수] (0) | 2021.12.01 |
[Python/백준] #10866- [덱] (0) | 2021.12.01 |