| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - 그래프 탐색
 - level2
 - 웹 프론트엔드
 - lv2
 - 그래프이론
 - 스택
 - 너비 우선 탐색
 - 백준
 - 프로그래머스스쿨
 - 그래프 이론
 - CSS
 - 다이나믹 프로그래밍
 - 구현
 - 정렬
 - BASIC
 - 프로그래머스
 - programmers
 - BFS
 - 자료구조
 - 딕셔너리
 - JavaScript
 - 알고리즘
 - 그리디 알고리즘
 - 파이썬
 - 자바스크립트
 - DFS
 - 문자열
 - 브루트포스 알고리즘
 - web
 - DP
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
DevLog:-)
[알고리즘][파이썬]2839-설탕 배달 본문
반응형
    
    
    
  문제

코드
import sys
N = int(sys.stdin.readline())
dp =[0,-1,-1,1,-1,1]+[0 for i in range(N)]
for i in range(6,N+1):
    dp[i] =-1
    if(dp[i-3]!=-1 and dp[i-5]!=-1):
        dp[i] = min(dp[i-3]+1,dp[i-5]+1)
    elif(dp[i-3]!=-1):
        dp[i] = dp[i-3]+1
    elif(dp[i-5]!=-1):
        dp[i] = dp[i-5]+1
    
print(dp[N])
코멘트
Dp를 이용해서 풀었다.
제시된 무게를 3킬로그램과 5킬로그램 봉지로 나눌 때 봉지 수가 최소가 되도록 하는 문제이다.
제시된 무게까지 for문을 돌려서 dp리스트에 최소 개수를 계속 저장할 수 있도록 했다. 그리고 인덱스 값이 커지면서 이전에 저장된 값을 활용할 수 있도록 코드를 작성했다.
for문을 돌 때 i-3, i-5 처리를 하기 때문에 인덱스 5까지의 무게는 리스트 선언할 때 미리 지정해 주었다💫
반응형
    
    
    
  '알고리즘 > 백준' 카테고리의 다른 글
| [알고리즘][파이썬]2145-숫자 놀이 (0) | 2023.07.20 | 
|---|---|
| [알고리즘][파이썬]1309-동물원 (0) | 2023.07.17 | 
| [알고리즘][파이썬]2579-계단오르기 (0) | 2023.07.13 | 
| [알고리즘][파이썬]14501-퇴사 (0) | 2023.07.12 | 
| [알고리즘][파이썬]1302-베스트 셀러 (0) | 2023.07.10 |