[6일차] Implementation_시각

Tourist_X·2022년 1월 30일
0

🏆Today Code Test


🛠Problem Approach

문제

정수 N이 입력되면 00시 00분 00초 부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하세요

🔑Solution

✅ 접근 방법

가능한 모든 시각의 경우를 하나씩 모두 세서 풀 수 있는 문제

따라서 시간을 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)
profile
Always, Better than.

0개의 댓글