[Py3] 이코테 4-2 시각

결론부터 말하자면 나의 풀이 방식은 출제자의 의도와 다르다

00:00:00부터 N:00:00까지 시간에서 3이 "하나라도" 포함된 모든 경우 찾기
조건은 1<=N<=23

# 첫 풀이
# 여긴 시간복잡도가 O(1)

import sys

N = int(sys.stdin.readline())
h = 60 * 60
r = 5 * (15 * 9 + 60) + 600

if N == 23:
    print((N - 2) * r + 3 * h)
elif N >= 13:
    print((N - 1) * r + 2 * h)
elif N >= 3:
    print(N * r + h)
else:
    print((N + 1) * r)

# 뭔가 더러워서 고쳐 봤음
# 시간복잡도 O(N), N + 1회 N이 작아서 큰 차이 안날 듯

res = 0

for i in range(N + 1):
    if '3' in str(i):
        res += h
    else:
        res += r

print(res)

# 의외로 시간복잡도는 O(N)
# 다만 최소 3600(N+1)회를 돌게 됨

cnt = 0

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

print(cnt)

개인적으로 브루트포스 알고리즘을 극혐싫어하기 때문에 다른 방식으로 풀어봤다.

수학적으로 접근한 풀이는 다음과 같은데

나 혼자 보려고 적은거라 글씨를 해석하긴 쉽진 않다...

좋은 웹페이지 즐겨찾기