새소식

⌨️ Algorithms/백준

[Python] 백준 10820번_문자열 분석

2023. 1. 27. 19:41

  • -

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

 

10820번: 문자열 분석

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

www.acmicpc.net

 

  • 문자열 N개가 주어질 때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수 구하기
  • 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있음
  • 입력
    • 첫째 줄부터 N번째 줄까지 문자열이 주어짐 (1 ≤ N ≤ 100)
    • 문자열의 길이는 100을 넘지 않음
  • 출력
    • 첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력
  • 시간 제한: 1초
  • 메모리 제한: 256 MB

 

"""
입출력 예시)

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
"""

 

 

## 의사코드 ##

# 소문자 -> islower()
# 대문자 -> isupper()
# 숫자 -> isdigit()
# 공백 -> " "

# cnt += 1

 

 

첫 번째 시도

 

import sys
input = sys.stdin.readline
input_str = input().split('\n') 

lower, upper, digit, space = 0, 0, 0, 0

for i in input_str:
    for j in range(len(i)):
        if i[j].islower():
            lower += 1
        elif i[j].isupper():
            upper += 1
        elif i[j].isdigit():
            digit += 1
        elif i[j] == " ":
            space += 1
    print(lower, upper, digit, space)

-> 틀림

-> N개의 문자열을 한 번에 입력받아서 줄바꿈으로 나눈다고 생각했는데 문제에서는 문자열이 한 줄씩 주어짐

 

 

 

통과한 코드

 

import sys

while True:
    # 한 줄씩 입력
    s = sys.stdin.readline().rstrip('\n') # 문자열 맨 오른쪽의 줄바꿈 삭제
    # 입력되는 값이 없으면 break 
    if not s:
        break 
    lower, upper, digit, space = 0, 0, 0, 0
    # 문자열 분석
    for i in range(len(s)):
        if s[i].islower():
            lower += 1
        elif s[i].isupper():
            upper += 1
        elif s[i].isdigit():
            digit += 1
        elif s[i] == " ":
            space += 1
    print(lower, upper, digit, space)

-> while문으로 한 줄씩 입력받기

 

 

 

 

참고)

 

https://passwd.tistory.com/entry/Python-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%ED%99%95%EC%9D%B8-%EB%B0%8F-%EB%B3%80%ED%99%98

 

[Python] 대소문자 확인 및 변환

이 글에서는 문자가 대문자인지, 소문자인지 확인하는 함수와 문자열을 대문자 또는 소문자로 변경하는 함수를 정리한다. isupper 문자가 대문자인지 확인한다. str.isupper() # return : bool # 예시 print(

passwd.tistory.com

 

https://velog.io/@tkdduf727/%EB%B0%B1%EC%A4%80-%EC%95%8C%ED%8C%8C%EB%B2%B3-%EC%B0%BE%EA%B8%B0-1919%EB%B2%88-%ED%8C%8C%EC%9D%B4%EC%8D%AC-Python-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0

 

[백준] 문자열 분석 10820번 파이썬 Python 자료구조

몇개의 문자열이 들어오는지 모르는 상황에서 어떻게 input을 받을 것인가.\-> 몇개의 문자열이 들어오는지 모르기에 sys.stdin.readline()을 사용한다.\-> sys.stdin.readline()은 개행문자('\\n')를 받는다. 없

velog.io

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!