[백준] 설탕배달_2839번

손시연·2022년 4월 4일
0

algorithm

목록 보기
1/18

설탕배달_2839번

코드

leftover = [0, -1, -1, 1, -1, 1, 2, -1, 2, 3, 2, 3, 4]
n = int(input())
portion = n // 5  # 몫
rest = n % 5  # 나머지
if n <= 12:
    print(leftover[n])
else:
    while leftover[rest] == -1:
        portion -= 1
        rest += 5
    print(portion + leftover[rest])

풀이노트

leftover = 1~??에 해당하는 값이 배열로 존재
a = n//5
a-=1 해서 leftover != -1 이면 최적 값
leftover ==-1 이면 a-=1 을 하며 최적 값을 찾음

leftover 를 어디까지 만들어야 하는가?
1차시도 / 2차시도 / 3차시도 / 4차시도
0 / 5 / 10 / 15
1 / 6 / 11 / 16
2 / 7 / 12 / 17
3 / 8 / 13 / 18
4 / 9 / 14 / 19

5로 나누었을 때 나눗셈이 가능한 경우는 0 ~ 4 까지 임
1 이 실패하면 6으로 넘어가고, 6이 실패하면 11로 넘어가는 방식
만약에 6이 성공하면 11 이나 16 까지는 가지 않음
나머지 0 -> 0
나머지 1 -> 6
나머지 2 -> 12
나머지 3 -> 3
나머지 4 -> 9

따라서 leftover 는 나머지 0~12까지만 존재하면 됨


소요시간 : 80분

profile
Server Engineer

0개의 댓글