🚩 문제 설명
https://www.acmicpc.net/problem/10820
⏱️ 시간 복잡도
▪ 주어지는 문장의 갯수가 N이라면 시간복잡도는 O(N)이라고 할 수 있다.
◾ 소문자 / 대문자 / 숫자 / 공백의 갯수를 출력하는 문제
◾ 문자열 확인
- islower() ➡️ 소문자 인가 아닌가
- isupper() ➡️ 대문자 인가 아닌가
- isdigit() ➡️ 숫자인가 아닌가
- isspace() ➡️ 공백인가 아닌가
✅ 입출력
1) 첫번째 줄부터 N번째 줄 까지 각각 문자열이 주어진다.
return ➡️ 각 문자열의 문자의 소문자/대문자/숫자/공백의 갯수를 공백을 기준으로 출력한다.
✔️ 예제 1
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
📑 문제 풀이
with 파이썬 (Python)
import sys
while True:
S = sys.stdin.readline().strip('\n')
if not S:
break
l, u, d, e = 0, 0, 0, 0
for s in S:
s = ord(s)
if s in range(ord('a'), ord('z') + 1):
l += 1
elif s in range(ord('A'), ord('Z') + 1):
u += 1
elif s in range(ord('0'), ord('9') + 1):
d += 1
elif s == ' ':
e += 1
print(l, u, d, e)
더보기
➕ 다른 코드
import sys
while True:
line = sys.stdin.readline().strip('\n')
if not line:
break
l, u, d, s = 0, 0, 0, 0
for each in line:
if each.islower():
l += 1
elif each.isupper():
u += 1
elif each.isdigit():
d += 1
elif each.isspace():
s += 1
print(l, u, d, s)
💬 Point
➡️ range(ord('A'), ord('Z') + 1)
➡️ sys.stdin.readline().strip('\n')
◾ 만약 입력이 들어오지 않는 다면 break를 걸어준다.
◾ 문자열의 각 문자가 알파벳 혹은 숫자, 공백에 해당하는지 확인하고 카운트 해준다.
◾ 입력의 갯수가 들어오지 않아서 당황했던 문제
# 코드 플러스 문자열 분석 파이썬
# 백준 10820 문자열 분석 파이썬 python
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 백준 알고리즘' 카테고리의 다른 글
[자료구조(참고)] [BJ11655] ROT13 (0) | 2021.11.29 |
---|---|
[자료구조(참고)] [BJ2743] 단어 길이 재기 (0) | 2021.11.29 |
[자료구조(참고)] [BJ10809] 알파벳 찾기 (0) | 2021.11.29 |
[자료구조(참고)] [BJ10808] 알파벳 개수 (0) | 2021.11.29 |
[자료구조(참고)] [BJ1935] 후위 표기식2 (0) | 2021.11.29 |