알고리즘 문제(SOL)

[백준/10820/파이썬] 문자열 분석

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

 

10820번: 문자열 분석

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

www.acmicpc.net

Problem

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

조건

  • 첫째 줄부터 N번째 줄까지 문자열이 주어진다. (1 ≤ N ≤ 100) 문자열의 길이는 100을 넘지 않는다.

SOL

파이썬에는 문자열이 소문자인지, 대문자인지, 숫자인지, 공백인지 확인하는 함수가 내장되어있다.

내장함수를 썼지만, 사실 내장되어 있지않다고 해도, 아스키코드를 이용해서, 검사를 할 수 있다.

 

3번째 입력에서 뒤에 공백이 더 있는걸 모르고, rstrip()을 그냥해주는 실수를 범하지 말자 :( 

그리고, 입력이 종료되는 시점은 딱히 정해지는게 없으므로, 그냥 입력이 비었다면 입력을 종료해줬다.

import sys
input= sys.stdin.readline

while True:
    line = input().rstrip("\n")
    lo,up,num,blank=0,0,0,0
    
    if not line:
        break
    for s in line:
        if s.islower():
            lo+=1
        if s.isupper():
            up+=1
        if s.isdigit():
            num+=1
        if s.isspace():
            blank+=1
        
    print(f"{lo} {up} {num} {blank}")