삽집하는 개발들/알고리즘

[96일차] 문자열 분석 - 백준 - 10820(python - 문자열)

악투 2023. 12. 15. 20:23
반응형

문제 설명

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

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

 

입력

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

 

출력

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

 

예제 입력, 예제 출력

This is String
SPACE    1    SPACE
 S a M p L e I n P u T     
0L1A2S3T4L5I6N7E8
10 2 0 2
0 10 1 8
5 6 0 16
0 8 9 0

 

코드 및 설명

while True:
  try:
    n = input()
    n_arr = [0, 0, 0, 0]
    answer = ""
    
    for char in n:
      if char.isalpha():
        if ord(char) >= 97:
          n_arr[0] += 1
        else:
          n_arr[1] += 1        
      elif char == " ":
        n_arr[3] += 1
      else:
        n_arr[2] += 1
    
    #answer = " ".join(str(val) for val in n_arr) 
    for val in n_arr:
      answer += f"{val} "
          
    print(answer)
  except Exception as err:
    break

 

이 문제는 입력 받은 문자열에 문자들이 소문자, 대문자, 숫자, 공백인지 확인하고 개수를 출력하는 것이다.

 

예제에는 4줄의 입력받을 문자열이 있는 데 주어진 문자열에 개수도 없고 문자열만 4줄 나열된 걸 보면 while을 이용하고,

 

try except으로 처리해줘야할 것이다.

 

n_arr에 소문자, 대문자, 숫자, 공백 순으로 지정한다고 생각하고 [0, 0, 0, 0]을 만들어주었다.

 

그 후 입력받은 문자열을 하나하나 체크하며 

 

알파벳인지 확인하고 ord(char) >= 97 소문자인지 대문자인지 구분

" " 공백 체크

나머진 숫자만 남기때문에 else에서 처리

 

이렇게 해주고 배열의 값을 출력해주면 된다.

반응형