알고리즘 풀이/Python

[Python] 시각 (백준 18312번 파이썬)

모남(monam2) 2023. 9. 18. 17:03

문제

정수 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가 하나라도 포함되는 시각들의 수를 출력한다.

예제 입력 1

5 3

예제 출력 1

11475

 

 

문제 이해

- 어떤 시간에 k가 있는지 판단하는 완전탐색 문제입니다.

- 시간이라는 특성을 이용한 문제로, 3중 루프를 통해 구할 수 있습니다.

- 이때, 시,분,초가 한자리 수 (05분, 09초 등) 인 경우 05,09 가 아닌 5,9로 생성되기 때문에 앞에 문자열 0을 붙여주는 작업을 추가해야 합니다. 이는 반복문을 통해 한자리 수 일 경우(10으로 나눈 몫이 0) 문자 0을 붙이도록 했습니다.

- 한자리 수가 아니라면 그냥 문자열로 변환하여 새 배열에 넣습니다.

 

 

코드

#백준 18312 시각
n,k = map(int,input().split())
count = 0

for h in range(n+1):
    for m in range(60):
        for s in range(60):
            a = [h,m,s]
            newa = []
            for i in a:
                if i//10 == 0:
                    i = '0'+str(i)
                else:
                    i = str(i)
                newa.append(i)

            for i in newa:
                if i.count(str(k)) > 0:
                    count += 1
                    break
print(count)