python-for-coding-test
python-for-coding-test copied to clipboard
예제 4-2를 반복문 없이 푸는 방법
3이 들어가는 규칙이 존재하니깐 굳이 반복문을 사용하지 않아도 될 것 같습니다.
우선, 초에서 3이 들어가는 경우는
3, 13, 23, 43, 53 5개와
3*로 시작하는 10개 입니다.
따라서, 시와 분에 3이 들어가지 않는다면 15개입니다.
그런데 분에서도 위와 같은 규칙이 적용될 것입니다.
즉, 60분 중 45분은 각각 15개가 존재할 것이고 나머지 15분은 각각 60개가 존재할 것입니다.
따라서, 일반적으로 한시간에 3이 들어가는 경우는 45 * 15 + 15 * 60 = 1575개가 존재합니다.
그런데, 만약 시에 3이 들어갈 경우 3600개를 모두 셀 수 있습니다. 즉, 주어진 n만큼 3이 몇번 들어가면 되는지 알면 그만큼 3600개씩 셀 수 있다는 말입니다.
23시까지 존재하므로, 3, 13, 23일때 3600을 셉니다
코드를 보면 다음과 같습니다.
n = int(input())
unit = 1575
if n >= 23:
m = 3
elif n >= 13:
m = 2
elif n >= 3:
m = 1
else:
m = 0
n -= m
result = (n + 1) * unit
result += m * 3600
print(result)
unit은 일반적으로 1575개가 존재함을 의미합니다.
m은 3600개를 세야하는 경우를 의미합니다.
위 공식을 적용하면 문제를 해결 할 수 있습니다.
혹시 오류가 있다면 지적 부탁드립니다.