python-for-coding-test icon indicating copy to clipboard operation
python-for-coding-test copied to clipboard

예제 4-2를 반복문 없이 푸는 방법

Open JeHwanYoo opened this issue 4 years ago • 0 comments

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개를 세야하는 경우를 의미합니다.

위 공식을 적용하면 문제를 해결 할 수 있습니다.

혹시 오류가 있다면 지적 부탁드립니다.

JeHwanYoo avatar Nov 07 '21 07:11 JeHwanYoo