본문 바로가기
백준 (코테)

27. 문자열 분석(10820), 단어 길이 재기(2743)

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

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

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

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

답:

while True:
    try: #예외 구문
        string = input()
        answer = [0] * 4
        for s in string:
            if s.islower():
                answer[0] += 1
            elif s.isupper():
                answer[1] += 1
            elif s.isdigit():
                answer[2] += 1
            elif s == ' ':
                answer[3] += 1
        print(*answer)
    except EOFError:
        break

입력된 문자열에서 소문자, 대문자, 숫자, 공백의 개수를 계산하고, 입력이 끝날 때까지 이를 반복적으로 수행하는 프로그램을 만드는 것이 목적이다. 입력이 끝나면 프로그램이 종료된다.

  1. while True::
    • 무한 루프를 시작. 사용자가 입력을 중단하거나 오류가 발생할 때까지 계속해서 실행된다.
  2. try::
    • 예외 처리를 위한 try 블록이다. 입력이 없을 경우 발생하는 EOFError를 처리하기 위해 사용된다. 예외문을 작성하지 않으면 문제가 틀리도록 설계가 되어있다.
  3. string = input():
    • 사용자로부터 문자열을 입력받는다. 
  4. answer = [0] * 4:
    • 4개의 요소가 모두 0인 리스트 answer를 생성한다. 이 리스트는 각각 소문자, 대문자, 숫자, 그리고 공백의 개수를 저장하는 역할을 한다.
      • answer [0]: 소문자 개수
      • answer [1]: 대문자 개수
      • answer [2]: 숫자 개수
      • answer [3]: 공백 개수
  5. for s in string::
    • 입력된 문자열 string의 각 문자를 for문 돌리게 된다.
  6. if s.islower()::
    • 문자가 소문자인지 확인한다. 소문자일 경우, answer [0]에 1을 더한다.
  7. elif s.isupper()::
    • 문자가 대문자인지 확인한다. 대문자일 경우, answer[1]에 1을 더한다.
  8. elif s.isdigit()::
    • 문자가 숫자인지 확인한다. 숫자일 경우, answer[2]에 1을 더한다.
  9. elif s == ' '::
    • 문자가 공백인지 확인한다. 공백일 경우, answer[3]에 1을 더한다.
  10. print(*answer):
    • 리스트 answer의 값을 공백으로 구분하여 출력한다. 즉, 소문자, 대문자, 숫자, 공백의 개수를 차례대로 출력하게 되는 것이다.
  11. except EOFError::
    • 입력이 더 이상 없을 때(파일 끝 또는 입력 중단 시 발생) EOFError가 발생한다. 이 예외가 발생하면 루프를 종료 (break)하고 프로그램을 종료하게 된다.

결국, 이 문제는 "파이썬 자체 함수"를 이용해서 풀게 된 문제이다. islower, isupper, isdigit 함수를 이용해야 한다. (파이썬의 장점이 보인 문제)


문제.
알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다.

print(len(input()))

len은 입력받은 문자열의 길이를 반환하는 함수이다. input으로 받고 len 함수를 이용해주면 쉽게 풀린다.

'백준 (코테)' 카테고리의 다른 글

29. 네 수(10824)  (0) 2024.09.22
28. ROT13(11655)  (0) 2024.09.20
26. 알파벳 개수(10808), 알파벳 찾기(10809)  (1) 2024.09.14
25. 후기표기식2(1935), 후기표기식(1918)  (0) 2024.09.13
24. 오등큰수(17299)  (0) 2024.09.12