백준 14916번 바로가기

나의 풀이

c = int(input())
arr = [0,2,1,3,2,1,3,2,4,3]
if c == 1 or c == 3:
  print(-1)
else:
  print((c//10)*2 + arr[c%10])

고수의 풀이

n=int(input())
print((n//5+[0,2,1,3,2][n%5],-1)[n in(1,3)])

출처

CODE REVIEW

  1. 두 자리 숫자부터는 10=5원*2로 생각해서 10마다 2씩 늘려주면된다. 따라서 거스름돈을 10으로 나눈 몫(q)과 나머지(r)에 집중해서 풀면 된다.
  2. 고수의 풀이의 경우 5로 나눈 몫과 나머지를 가지고 문제를 풀어주었다. 나머지 논리는 동일!