[6日間]実施視点


🏆Today Code Test
🛠Problem Approach
質問する
整数Nを入力する場合は、00時00分00秒からN時59分59秒までのすべての時刻のうち、3が1つでも任意の時刻の数字を求めるプログラムを作成します.
🔑Solution
方法
すべての可能な角度から逐一計算して解決できる問題です.
したがって、時間を1ずつ増やし、少なくとも1つの3が含まれていることを確認する.
◇徹底探索(ブルート・フォーシング)
可能な限り、すべての数のナビゲーションを確認します.
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である.
Pythonの毎秒演算回数は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)