정수 N이 입력되면 00시 00분 00초 부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하세요
✅ 접근 방법
가능한 모든 시각의 경우를 하나씩 모두 세서 풀 수 있는 문제
따라서 시간을 1씩 증가시키며 3이 하나라도 포함되어 있는지 확인
⇒ 완전 탐색(Brute Forcing)
가능한 경우의 수 모두 검사해보는 탐색
for i in range(n+1):
for j in range(60):
for k in range(60):
if '3' in str(i)+str(j)+str(k):
cnt += 1
모든 경우의 수가 24 x 60 x 60 = 86400로,
파이썬이 1초에 연산할 수 있는 횟수인 2000만번 보다 매우 작기 때문에 완전 탐색이 가능하다.
n = int(input())
cnt = 0
checker = sum([1 if '3' in str(j) else 0 for j in range(60)])
for i in range(n+1):
if i == 3 or i == 13 or i == 23:
cnt += 3600 # 60 x 60, 시간에 3이 들어가므로
else:
cnt += ((60 - checker) * checker) + (checker * 60) # 분 단위별 '3' 카운트
print(cnt)