- 알고리즘 공부
- 코딩테스트
- 알고리즘 문제
- spring 기초
- 백준 dp
- 코테
- 프로그래머스 전화번호 목록 python
- 프로그래머스 전화번호 목록 파이썬
- 백준 바닥장식 python
- dp 알고리즘
- 프로그래머스 level1
- programmers
- 백준
- 프로그래머스 레벨1
- 스프링 초보
- 프로그래머스 레벨2
- 코딩테스트 연습
- 스프링 기초
- 장고
- Spring 초보
- 바닥장식 파이썬
- 프로그래머스
- 코테 연습
- Django 기초
- 전화번호 목록 python
- 프로그래머스 알고리즘 고득점 kit
- Django
- 프로그래머스 고득점 kit
- 장고 기초
- 백준 다이나믹프로그래밍
- Today
- Total
목록백준 dp (4)
일일구름 IT
코드 n, k = map(int, input().split()) coin = [] for i in range(n): coin.append(int(input())) sum = [10001 for i in range(k+1)] sum[0] = 0 for i in coin: for j in range(i, k+1): sum[j] = min(sum[j], sum[j-i]+1) if sum[k] == 10001: print(-1) else: print(sum[k]) 동전 1과 비슷한 문제이지만 차이점은 동전의 최소 갯수를 구하는 점과 불가능한 경우엔 -1을 출력하는 것이다. 일단 sum 리스트를 초기값 10001로 초기화 해준다. i==j일 경우에는 동전을 1개만 뽑아도 되므로 sum[0]에 0을 넣어 sum[i..
문제 코드 n, k = map(int, input().split()) coin = [] for i in range(n): coin.append(int(input())) sum = [0 for i in range(k+1)] sum[0] = 1 for i in coin: for j in range(i, k+1): sum[j] += sum[j-i] print(sum[k]) 예제의 경우로 설명해보면, 동전 1만 선택했을 경우, 동전 1, 2원 중에서 선택한 경우, 동전 1, 2, 5원 중에서 선택한 경우를 차례로 구한다. sum[0]에 1을 넣어준 이유는 j원이 되는데 i원 1개만 선택해도 되는 경우를 고려한것입니다. (j == i인 경우) sum[j] += sum[j-i] 코드는 동전 i원을 뺀 값이 되는 경..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net [문제] [내 코드] n = int(input()) tri = [] for i in range(n): tri.append(list(map(int, input().split()))) for i in range(n-2, -1, -1): for j in range(i+1): tri[i][j] = max(tri[i+1][j], tri[i+1][j+1]) + tri[i][j] print(tri[0][0]) 맨 아래에서 두 번째 줄 숫자부터 대각선 왼쪽, 오른쪽 아래 중에 더 큰..
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net [문제] [틀린 코드] n = int(input()) num = list(map(int, input().split())) arr = [] for i in range(1, n): for j in range(0, n-i): arr.append(sum(num[j:(j+i)])) print(max(arr)) 처음에는 리스트 슬라이싱을 이용해서 모든 경우를 구한 뒤 가장 합이 큰 경우를 출력하였다. 이렇게 문제를 푸..