[백준 2839][파이썬] 설탕 배달

2023. 1. 23. 12:00·백준 알고리즘/dp
728x90

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

dp로 문제를 풀어보았다.

 

dp[i]의 값은 N이 i일 때의 배달하는 봉지의 최소 개수이다. 만들 수 없다면 -1을 저장한다.

 

1. 먼저 길이가 N+1이고 모든 값이 -1인 리스트를 생성한다.

 

dp=[-1]*(n+1)

 

만약 N킬로그램을 만들 수 없는 경우 dp[i]의 값을 변경하지 않으면 된다.

 

2. dp[1]부터 dp[5]까지는 미리 값을 넣어준다.

dp[1:6]=[-1, -1, 1, -1, 1]​
 
 

3. 조건에 따라 dp[i]의 값을 결정한다. 

 

(1) dp[i-3]과 d[i-5] 모두 -1

 

N킬로그램을 만들 수 없으므로 dp[i]의 값도 -1이 된다.

 

(2) dp[i-3]만 -1

 

dp[i]의 값은 dp[i-5]+1이 된다.

 

(3) dp[i-5]만 -1

 

dp[i]의 값은 dp[i-3]+1이 된다.

 

(4) 둘 다 -1이 아님

 

dp[i]의 값은 dp[i-3]+1과 dp[i-5]+1 중 작은 값이 된다.

 

if n>=6:
    for i in range(6, n+1):
        if dp[i-3]!=-1 and dp[i-5]==-1:
            dp[i]=dp[i-3]+1
        elif dp[i-5]!=-1 and dp[i-3]==-1:
            dp[i]=dp[i-5]+1
        elif dp[i-5]!=-1 and dp[i-3]!=-1:
            dp[i]=min(dp[i-3]+1, dp[i-5]+1)

 

<전체 코드>

n=int(input())
dp=[-1]*(n+1)
dp[1:6]=[-1, -1, 1, -1, 1]
if n>=6:
    for i in range(6, n+1):
        if dp[i-3]!=-1 and dp[i-5]==-1:
            dp[i]=dp[i-3]+1
        elif dp[i-5]!=-1 and dp[i-3]==-1:
            dp[i]=dp[i-5]+1
        elif dp[i-5]!=-1 and dp[i-3]!=-1:
            dp[i]=min(dp[i-3]+1, dp[i-5]+1)
        
print(dp[n])
728x90

'백준 알고리즘 > dp' 카테고리의 다른 글

[백준 9251][파이썬] LCS (최장 공통 부분 수열)  (0) 2023.03.18
[백준 11066][파이썬] 파일 합치기 (dp 알고리즘)  (0) 2023.03.15
[백준 1699][파이썬] 제곱수의 합  (0) 2023.01.14
[백준 1912][파이썬] 연속 합  (0) 2023.01.13
[백준 11055, 11722, 11054][파이썬] 증가, 감소하는 수열 dp 문제  (0) 2023.01.11
'백준 알고리즘/dp' 카테고리의 다른 글
  • [백준 9251][파이썬] LCS (최장 공통 부분 수열)
  • [백준 11066][파이썬] 파일 합치기 (dp 알고리즘)
  • [백준 1699][파이썬] 제곱수의 합
  • [백준 1912][파이썬] 연속 합
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링 OAuth2
    parametric search
    RNN
    codetree
    Vector Store
    binary search
    Merge
    openvidu 배포
    ChatPromptTemplate
    다익스트라
    AWS Lambda
    code tree
    스택
    ci/cd
    nn.RNN
    embedding
    푸쉬 알람
    bfs
    파이썬
    influxDB CLI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[백준 2839][파이썬] 설탕 배달
상단으로

티스토리툴바