본문 바로가기

컴퓨터/BOJ

[BOJ](Python) 10820번 : 문자열 분석 / EOF를 설정하는 방법

www.acmicpc.net/problem/10820

 

10820번: 문자열 분석

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

www.acmicpc.net

이번 문제는 다른 문제와 다르게 종료 조건이 설정되어있지 않다.

따라서 문제에서 입력이 주어지지 않을 때 자동으로 입력받는 것을 그만해야 한다.

 

import sys
import string

L_alphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
S_alphabet = list(''.join(L_alphabet).lower())
for T in sys.stdin:
    T.rstrip()
    small = 0; large =0; blank = 0; number =0
    for i in T:
        if i == ' ':
            blank += 1
        elif i in L_alphabet:
            large += 1
        elif i in S_alphabet:
            small += 1
        elif i in string.digits:
            number += 1
    print(small, large, number, blank)
for T in sys.stdin:

 sys.stdin을 하게 되면 input()와 같이 터미널에서 입력을 받아서 이를 변수가 참조할 수 있도록 해준다.

단 input()과 다르게 입력이 더이상 없을 때 자동으로 종료하기 때문에 이와 같이 EOF가 따로 설정되어 있지 않을 때 매우 유용한 모듈이다.

 

코드에선 L_alphabet 리스트에 대문자의 원소를 넣고 이를 문자열로 변환하여 소문자 알파벳으로 변경했는데 이러한 방법말고 모듈을 통해 다음과 같이 대문자, 소문자 리스트를 만들 수 있다.

import string
L = [i for i in string.ascii_uppercase]
S = [i for i in string.ascii_lowercase]

print(L)
>>> ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

print(S)
>>> ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 
'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

출처:

docs.python.org/ko/3/library/sys.html

 

sys — 시스템 특정 파라미터와 함수 — Python 3.8.5 문서

sys — 시스템 특정 파라미터와 함수 이 모듈은 인터프리터에 의해 사용되거나 유지되는 일부 변수와 인터프리터와 강하게 상호 작용하는 함수에 대한 액세스를 제공합니다. 항상 사용 가능합니

docs.python.org