꾸준하게 거북이처럼

백준 10820번 문자열 분석 - 파이썬 본문

Algorithm 문제 & 공부/문자열

백준 10820번 문자열 분석 - 파이썬

somm12 2022. 7. 20. 06:39

 

 

10820번: 문자열 분석

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

www.acmicpc.net

이 문제를 풀다가 여러 문자열을 입력 받는데, 종료조건이 없어서 어떻게 풀어야 할지 난감했다. 입력받는 문자열 개수도 미리 입력받지 않음.

아래와 같이 while문 True를 통해 계속해서 입력을 받고 유효하지 않은 문자열이 입력되면 break문을 쓰는 방식으로 예외처리를 한다.

import sys

while True:
	a = sys.stdin.readline().rstrip('\n')
    if not a:
    	break

중요한 점은 reline() 뒤에 rstrip('\n')를 꼭 붙여줘야 한다는 것!! 없고 그냥 rstrip()만 쓰면 

오른쪽 공백문자열을 삭제해버린다. 그래서 무시해야할 줄바꿈 문자 '\n' 만 명시해서 무시해준다. 그래야 공백문자 오른쪽 끝에 것들도 count를 할 수 있다. 나는 줄바꿈 문자만 자동적으로 삭제해주는 줄 알고 rstrip() 이렇게만 썼었다.

* rstrip()

: 오른쪽 공백, 줄바꿈 모두 삭제

* lstrip()

: 왼쪽 공백, 줄바꿈 모두 삭제

* strip()

: 왼쪽, 오른쪽 공백, 줄바꿈 모두 삭제

내 코드

import sys
while True:
    arr = sys.stdin.readline().rstrip('\n')
    if not arr:
        break
    lowerCase = 0
    upperCase = 0
    number = 0
    space = 0
    for val in arr:
        if val.islower():
            lowerCase += 1
        elif val.isupper():
            upperCase += 1
        elif val.isdecimal():
            number += 1
        elif val.isspace():
            space += 1
    print(lowerCase, upperCase,number,space)

 

Comments