BAEKJOON 2839 설탕 배달

상훈·2022년 4월 8일
0

BAEKJOON 2839 설탕 배달

문제

https://www.acmicpc.net/problem/2839


풀이

  1. dp 배열 생성 및 초기화
  2. 3의 배수 idx에 값 넣기
  3. 5의 배수 idx 값 넣기
  4. 현재 칸과 현재 -5번 째 칸+1 의 값 비교하면서 최소값으로 갱신

코드

N = int(input())
dp = [9999] *(N+1)                  # 나올 수 없는 큰 수로 dp 초기화
cnt3=1                              # 3의 배수의 idx에 초기값 설정
cnt5=1                              # 5의 배수의 idx에 초기값 설정
for i in range(1,N+1):
    if i%3 ==0:                     # 3의 배수 idx에 값 넣어주기
        dp[i]=cnt3
        cnt3+=1
    if i%5 ==0:                     # 5의 배수 idx에 값 넣어주기
        dp[i] = cnt5
        cnt5+=1

for i in range(3, N+1):             # 3뒤 부터 5칸 앞에에 1더한 것과 본인 중 더 작은 값으로 업데이트
    dp[i] = min(dp[i-5]+1,dp[i])

if dp[-1]==9999:
    print(-1)
else:
    print(dp[-1])

결과

dp를 사용해서 문제를 풀기 위해 노력했다. 아직 dp를 활용하여 문제를 푼다는 것이 익숙하지 않아 구현에 실패가 많았다. 여러가지 문제를 풀면서 dp를 구현하기 위해 노력해보자!

profile
문송 개발자

0개의 댓글

관련 채용 정보