문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
해결 방안
아스키 코드를 활용해서 96과 123 사이라면 소문자, 64와 91 사이라면 대문자, 32라면 공백, 나머지는 숫자로 처리했다.
내 코드
import sys
while True:
S = list(sys.stdin.readline().strip('\n'))
if not S:
break
count = [0 for _ in range(4)]
while S:
asc = ord(S.pop())
if 96 < asc < 123:
count[0] += 1
elif 64 < asc < 91:
count[1] += 1
elif asc == 32:
count[3] += 1
else:
count[2] += 1
print(*count)
직접 테스트 케이스를 입력했을 때는 정상적으로 출력이 돼서 뭐가 틀렸는지 못 찾았었다.
다른 사람의 코드를 참고해보니 sys.stdin.readline()으로 입력을 받을 때는 끝에 개행 문자(\n)이 들어가서 자동으로 엔터가 쳐져서 계속 틀리는 것이었다.
rstrip() 함수를 이용하여 끝에 붙는 개행 문자를 없애줬다.
'Problem Solve > 백준' 카테고리의 다른 글
[Python] 백준 10824번 - 네 수 (0) | 2024.03.27 |
---|---|
[Python] 백준 11655번 - ROT13 (0) | 2024.03.25 |
[Python] 백준 10809번 - 알파벳 찾기 (0) | 2024.03.25 |
[Python] 백준 10808번 - 알파벳 개수 (0) | 2024.03.22 |
[Python] 백준 1935번 - 후위 표기식2 (0) | 2024.03.13 |
문제
문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오.
각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다.
해결 방안
아스키 코드를 활용해서 96과 123 사이라면 소문자, 64와 91 사이라면 대문자, 32라면 공백, 나머지는 숫자로 처리했다.
내 코드
import sys
while True:
S = list(sys.stdin.readline().strip('\n'))
if not S:
break
count = [0 for _ in range(4)]
while S:
asc = ord(S.pop())
if 96 < asc < 123:
count[0] += 1
elif 64 < asc < 91:
count[1] += 1
elif asc == 32:
count[3] += 1
else:
count[2] += 1
print(*count)
직접 테스트 케이스를 입력했을 때는 정상적으로 출력이 돼서 뭐가 틀렸는지 못 찾았었다.
다른 사람의 코드를 참고해보니 sys.stdin.readline()으로 입력을 받을 때는 끝에 개행 문자(\n)이 들어가서 자동으로 엔터가 쳐져서 계속 틀리는 것이었다.
rstrip() 함수를 이용하여 끝에 붙는 개행 문자를 없애줬다.
'Problem Solve > 백준' 카테고리의 다른 글
[Python] 백준 10824번 - 네 수 (0) | 2024.03.27 |
---|---|
[Python] 백준 11655번 - ROT13 (0) | 2024.03.25 |
[Python] 백준 10809번 - 알파벳 찾기 (0) | 2024.03.25 |
[Python] 백준 10808번 - 알파벳 개수 (0) | 2024.03.22 |
[Python] 백준 1935번 - 후위 표기식2 (0) | 2024.03.13 |