본문 바로가기

알고리즘/백준-파이썬

[백준] 10820번 (python 파이썬)

https://www.acmicpc.net/problem/10820

 

10820번: 문자열 분석

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

www.acmicpc.net

 

import sys

while True:
  s = sys.stdin.readline().rstrip("\n")
  if not(s): 
    break
  else:
    lower = 0
    upper = 0
    number = 0
    blank = 0
    for c in s:
      if c.islower():
        lower += 1
      elif c.isupper():
        upper += 1
      elif c.isdigit():
        number += 1
      else:
        blank += 1
    else:
      print(lower, upper, number, blank)

 

sys.stdin.readline()으로 읽어들인 문자열은 input() 메서드로 읽는 것과는 다르게 뒤에 \n가 붙는다. 

이 문제는 공백도 카운트 하므로 strip() 메서드를 써버리면 안된다. 앞 뒤 모두 제거 하기 때문이다.

따라서 뒤에 자동으로 붙는 이스케이프 문자인 \n만 삭제해준다.

참고로 이스케이프 문자는 겉으로 보기엔 \n 처럼 2글자로 보이지만 1글자로 취급한다.