[BOJ] 10820: 문자열 분석

이슬비·2022년 5월 2일
0

Algorithm

목록 보기
32/110
post-thumbnail

밍기적 밍기적거리다가 이제서야 적는군...

10820: 문자열 분석

1. 내 풀이: 성공

사실 실패하고 말고도 없이 정말 쉬웠기 때문에... 다만 조오금 생각했던 부분이 있다.

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

2. 다른 풀이

이 문제를 아스키코드로 풀까 ~ 다르게 풀까 ~ 고민하다가 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는 더이상 입력값이 없는 상황이라고 한다.

오늘도 신기한 알고리즘의 세계 끝!

profile
정말 알아?

0개의 댓글