맛있는물회

[맛있는물회] <백준 알고리즘> 10820번 "문자열 분석" 본문

IT/알고리즘

[맛있는물회] <백준 알고리즘> 10820번 "문자열 분석"

맛있는물회 2020. 4. 23. 19:54

문제 조건

 

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

각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.


 

Input

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


 

Output

첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력한다.


 

 

생각한 아이디어

isspace, islower 등의 메서드가 있다!


입력의 횟수를 모르는 입력을 받을때는 여러가지 방법이있다.

예를 들어 10951번 과 같을 때는




while True: 
	line = sys.stdin.readline().rstrip('\n') 
	if not line: 
		break 
	for l in line: 
		print(l)
#출처 : https://sozerodev.tistory.com/30
# 풀이1 (출처: https://home-body.tistory.com/258)
while True:
    try:
        a, b = map(int, input().split())
        print(a+b)
    except:
        break
 
 
 
# 풀이2 (출처 : https://hwiyong.tistory.com/m/208?category=844316 )
import sys
 
for line in sys.stdin:
    a, b = map(int, line.split())
    print(a + b)
 
 
 
 
# 풀이3 (출처 : https://sinb57.tistory.com/entry/Python-3-10951-A-B-4 )
try:
    while 1:
        a,b = map(int, input().split())
        print(a+b)
except:
    exit()
 
 
 
# 풀이 4
while True:
    try:
        a, b = map(int, input().split())
        print(a+b)
    except:
        break

 

이런식으로 접근 가능하다!

 

소스코드

 

arr = list()
while 1:
    try:
        val = str(input())
        low,cap,num,blank = 0,0,0,0
        for i in range(0,len(val)):
            if val[i].isspace():
                blank += 1
            elif val[i].islower():
                low += 1
            elif val[i].isupper():
                cap += 1
            elif val[i].isdigit():
                num += 1

        answer = [low,cap,num,blank]
        print(*answer)
    except:
        break



 

 

*파이썬 문법 정리

 

Comments