[BOJ] 설탕 배달

❗ 풀이 과정

  • 아래의 사진 참고
  • 가장 왼쪽은 +3 이고 오른쪽으로 가는 건 +5라고 했는데
    그 반대로 가장 오른쪽은 +5이고 왼쪽은 +3이라고 생각해도 된다.
    전자는 풀이코드 1 이고 후자는 풀이코드 2라고 생각하면 될듯하다.

🤜 풀이 코드 1 (틀렸습니다.)

from math import ceil
N=int(input())
dp=[]
dp.append([3,5])
stat=0
answer=0
for i in range(N//5+1):
    arr=dp[i]
    new_arr=[]
    for a in arr:
        if arr.index(a)==0:
            new_arr.append(a+3)
            new_arr.append(a+5)
        else:
            new_arr.append(a+5)
    dp.append(new_arr)

for d in dp:
    answer+=1
    if N in d:
        print(answer)
        stat=1
if stat==0:
    print(-1)

( 주어진 테스트 케이스는 다 돌아가는데,, 채점하면 안돌아가는 코드,,, 왜일까,,,)

🤜 풀이 코드 2 (맞았습니다!)

N=int(input())
cnt=0

while(N>0):
    if N%5==0:
        cnt+=N//5
        N-=(N//5)*5 # 그냥 N=0 이라는 뜻
    else:
        N-=3
        cnt+=1
    
if N==0:
    print(cnt)
else:
    print(-1)

좋은 웹페이지 즐겨찾기