일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- 다익스트라
- DFS
- 이모티콘할인행사
- 벽부수고이동하기
- 그래프탐색
- 알고리즘
- 사이클게임
- 파괴되지않은건물
- 두큐합같게만들기
- 최단경로
- 파이썬
- [1차]캐시
- 징검다리건너기
- 큐
- 구현
- BFS
- 도넛과막대그래프
- 백준
- 섬연결하기
- 위상정렬
- 최소스패닝트리
- 자물쇠와열쇠
- DP
- RGB거리2
- 프로그래머스
- 프림알고리즘
- 거리두기확인하기
- 트리의지름
- 17404
- Today
- Total
목록DP (4)
블로그 이름 뭐로 하지

문제 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 풀이 DP 대표 문제~. 실버1이지만 볼때마다 뭔가 생각이 바로 떠올리지 않는 것 같다. ㅎㅎ -1의 대각선 , -2의 대각선 중에 큰 숫자를 지금의 스티커 점수와 더해주면 된다. 저렇게 고르면 자연스럽게 서로 인접한 스티커끼리는 더하지 않게 돼있다. 코드 T = int(input()) for _ in range(T): n = int(input()) dp = [list(map(in..
문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 풀이 RGB거리랑 비슷하다고 생각해서 그렇게 풀었더니 초과가 나왔다 ㅎㅎ 메모리 제한이 있어서 처음 입력값 자체를 하나의 거대한 arr로 저장해두는 것 자체가 안 되는 것 같았다. 그래서 입력받을 때마다 바로바로 맥스,민 값을 저장해둬야 겠다고 생각하고 코드를 변경했다. 일반적인 디피 문제라서 어렵진 않지만 메모리를 어떻게 적게 쓸 것인가를 고민했던 문제! 코드 from sys import stdin N ..
문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 보자마자 DP라고 생각했다. 백준 1149번 RGB거리랑 거의 똑같은 문제고 해당 문제를 풀었던 적 있어서 그 문제 풀이대로 풀었다. 문제를 3분컷하면 기분이 참..좋습니다. 코드를 더 효율적으로? 짧게? 짤 수 있을 것 같긴한데 짧은 코드라고 해서 무조건 좋은 코드는 아니라고 생각해서... 그냥 이대로 제출~ 코드 n = int(input()) arr = [] for _ in range(n): tmp = list(map(int,input().split())..
문제 https://www.acmicpc.net/problem/1149 풀이 9달 전에도 풀었던 문제여서 그런지 그냥 보자마자 현재 집이 빨강이면 이전집 초록 블루 비용에 현재 빨강 비용을 더했을 때 더 적은 값을 저장해두고 마지막 배열에서 min인 값을 찾으면 되겠다...고 생각했다. 정답 코드 n = int(input()) minr,ming,minb = 0,0,0 for i in range(n): r,g,b = map(int,input().split()) if i==0: minr=r ming=g minb=b else: new_minr = min(ming+r,minb+r) new_ming = min(minb+g,minr+g) new_minb = min(ming+b,minr+b) minr = new_mi..