CS/Problem-solving
백준 18312번 파이썬
OMIN_
2022. 4. 23. 12:00
문제 링크
https://www.acmicpc.net/problem/18312
18312번: 시각
정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로,
www.acmicpc.net
시간 제한 / 메모리 제한
1 초 | 256 MB |
문제
정수 N과 K가 입력되었을 때 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 모든 시각을 세는 프로그램을 작성하시오. 시각을 셀 때는 디지털 시계를 기준으로, 초 단위로만 시각을 구분한다.
예를 들어 K=3일 때, 다음의 시각들은 3이 하나 이상 포함되어 있으므로 세어야 하는 시각의 대표적인 예시이다.
- 23시 00분 00초
- 07시 08분 33초
반면에 다음의 시각들은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 예시이다.
- 15시 02분 55초
- 18시 27분 45초
입력
첫째 줄에 정수 N과 K가 공백을 기준으로 구분되어 주어진다. (0≤N≤23, 0≤K≤9)
출력
00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 K가 하나라도 포함되는 시각들의 수를 출력한다.
예제 입력
5 3
예제 출력
11475
풀이 코드
n, k = map(int, input().split())
cnt = 0
for h in range(0, n + 1):
for m in range(60):
for s in range(60):
time = ''
if h < 10:
time += '0' + str(h)
else:
time += str(h)
if m < 10:
time += '0' + str(m)
else:
time += str(m)
if s < 10:
time += '0' + str(s)
else:
time += str(s)
if str(k) in time:
cnt += 1
print(cnt)
처음에 k가 0인 경우를 고려하지 않아 계속 오답이 나왔다.
시, 분, 초가 각각 10보다 작은 경우 앞에 '0'을 채워줌으로써 k가 0인 테스트케이스를 통과할 수 있었다.