문제
N부터 M까지의 수들을 종이에 적었을 때 종이에 적힌 0들을 세는 프로그램을 작성하라.
예를 들어, N, M이 각각 0, 10일 때 0을 세면 0에 하나, 10에 하나가 있으므로 답은 2이다.
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 줄에는 N과 M이 주어진다.
- 1 ≤ T ≤ 20
- 0 ≤ N ≤ M ≤ 1,000,000
출력
각각의 테스트 케이스마다 N부터 M까지의 0의 개수를 출력한다.

답안
# 내 풀이
t = int(input())
for _ in range(t):
a, b = map(int, input().split())
lst = []
for i in range(a, b+1): # a부터 b까지
lst.append(str(i)) # lst에 str으로 바꿔서 넣어준다.
word = ''.join(lst) # lst의 값들을 이어붙힌다.
print(word.count('0')) # 이어붙힌 값에서 0을 센다.
# 다른사람 풀이
for _ in range(int(input())):
a, b = map(int, input().split())
li = []
for i in range(a, b+1):
li.append(i)
convert_string = ''.join(str(k) for k in li)
print(convert_string.count('0'))
후기
아래 풀이는 보다 간결하고 빠르고 메모리도 적다.
문자열, 숫자열에 익숙하고, join에 대해서 잘 알아야 풀수 있는 문제이다.
728x90
'파이썬 코딩테스트' 카테고리의 다른 글
백준 1920번 - 수찾기 (파이썬/Python) (0) | 2024.02.02 |
---|---|
백준 1676번 - 팩토리얼 0의 개수 (파이썬/Python) (0) | 2024.02.01 |
백준 1157번 - 단어 공부 (파이썬/Python) (0) | 2024.01.30 |
백준 11047번 - 동전 0 (파이썬/Python) (0) | 2024.01.29 |
백준 10809번 - 알파벳 찾기 (파이썬/Python) (2) | 2024.01.27 |