밍기적 밍기적거리다가 이제서야 적는군...
사실 실패하고 말고도 없이 정말 쉬웠기 때문에... 다만 조오금 생각했던 부분이 있다.
import sys
while True:
string = list(sys.stdin.readline().rstrip('\n'))
lower, upper, num, space = 0, 0, 0, 0
if not string:
break
for i in string:
if i.islower():
lower+=1
elif i.isupper():
upper+=1
elif i.isdigit():
num+=1
elif i == ' ':
space+=1
print(f'{lower} {upper} {num} {space}')
다른 부분은 문제 없이 스르륵 작성했는데, 문자열이 안 들어왔을 때는 어떻게 break를 줄지 생각하다가... 번뜩! not이 생각났다.
✅ 기억하기: 문자열이 없을 때 break
if not string: break
이 문제를 아스키코드로 풀까 ~ 다르게 풀까 ~ 고민하다가 is들로 풀었었다. 아스키코드로 푸신 분을 발견!
(출처: https://animoto1.tistory.com/entry/%EB%B0%B1%EC%A4%80-10820-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%84%EC%84%9D-Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC)
while True :
try :
text_lst = list(input())
lower , upper, num, blank = 0,0,0,0
for i in range(len(text_lst)) :
if text_lst[i] == " " :
blank += 1
elif 65 <= ord(text_lst[i]) <= 90 :
upper += 1
elif 97 <= ord(text_lst[i]) <= 122 :
lower += 1
else :
num += 1
print(lower,upper,num,blank)
except EOFError :
break
참고로 EOFError는 더이상 입력값이 없는 상황이라고 한다.
오늘도 신기한 알고리즘의 세계 끝!