[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)
개인적으로 브루트포스 알고리즘을 극혐싫어하기 때문에 다른 방식으로 풀어봤다.
수학적으로 접근한 풀이는 다음과 같은데
나 혼자 보려고 적은거라 글씨를 해석하긴 쉽진 않다...
Author And Source
이 문제에 관하여([Py3] 이코테 4-2 시각), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jiyong/Py3-이코테-4-2-시각저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)