⌨️ Algorithms/백준
[Python] 백준 10820번_문자열 분석
monzheld
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문으로 한 줄씩 입력받기
참고)
[Python] 대소문자 확인 및 변환
이 글에서는 문자가 대문자인지, 소문자인지 확인하는 함수와 문자열을 대문자 또는 소문자로 변경하는 함수를 정리한다. isupper 문자가 대문자인지 확인한다. str.isupper() # return : bool # 예시 print(
passwd.tistory.com
[백준] 문자열 분석 10820번 파이썬 Python 자료구조
몇개의 문자열이 들어오는지 모르는 상황에서 어떻게 input을 받을 것인가.\-> 몇개의 문자열이 들어오는지 모르기에 sys.stdin.readline()을 사용한다.\-> sys.stdin.readline()은 개행문자('\\n')를 받는다. 없
velog.io