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이 하나 이상 포함되어 있으므로 세어야 하는 시각의 대표적인 예시이다.

  1. 23시 00분 00초
  2. 07시 08분 33초

반면에 다음의 시각들은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 예시이다.

  1. 15시 02분 55초
  2. 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인 테스트케이스를 통과할 수 있었다.