티스토리 뷰


문제

 

10820번: 문자열 분석

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있

www.acmicpc.net


풀이

이 문제 풀기 전 부터 드는 생각이 굉장히 많았다.

우선, 입력받은 숫자들의 N이 없는데 이걸 EOFError로 try except 써야하나? 

한 줄 받고 한 줄 출력하는건가 n줄 입력 후 n줄 출력하는건가? 그렇다면 2단 리스트를 써야하나?

소문자 대문자 검사는 ord로 아스키 숫자로 바꾸고 해당 숫자 범위만큼은 소문자이고 다른건 대문자이고 구별해야하나?

띄어쓰기는 또 어떡하지? 등....

 

그렇지만 친절한 파이썬은 문자열을 검사하는 너무도 간편한 함수들이 있었다.

한 줄 받고 한 줄 출력하는 형식이라 만약 입력받은 string이 아니라면 break를 거는 방식으로 while문을 이용한다.

 

import sys

while True:
    strings = sys.stdin.readline().rstrip('\n')
    up, lo, sp, nu = 0, 0, 0, 0

    if not strings:
        break
    for i in strings:
        if i.isupper():	# 대문자 검사
            up += 1
        elif i.islower():	# 소문자 검사
            lo += 1
        elif i.isdigit():	# 숫자 검사
            nu += 1
        elif i.isspace():	# 공백 검사
            sp += 1
    sys.stdout.write("{} {} {} {}\n".format(lo, up, nu, sp))
반응형
댓글