728x90
반응형
https://www.acmicpc.net/problem/1149
1149번: RGB거리
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>
int arr[1002][3];
int dp[1002][3];
int min(int a, int b) {
if (a > b) {
return b;
}
else if (a < b) {
return a;
}
else {
return a;
}
}
int main() {
int n;
scanf("%d", &n);
for(int i=1;i<=n;i++){
for (int j = 0; j < 3; j++) {
scanf("%d", &arr[i][j]);
}
}
dp[0][0] = dp[0][1] = dp[0][2] = 0;
arr[0][1] = arr[0][1] = arr[0][2] = 0;
for (int i = 1; i <= n; i++) {
dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + arr[i][0];
dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + arr[i][1];
dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + arr[i][2];
}
int ans = min(min(dp[n][0], dp[n][1]), dp[n][2]);
printf("%d", ans);
}
|
cs |
항상 dp의 관점에서 푸는게 힘들다
위에서 아래로 arr를 기준으로 arr이 더 작은 걸 더해주면서 푸는게 아니라 아래에서 위를 바라보면서 지금까지 더해진 것 중 더 작은 값을 선택해야(즉 더 작은 dp를 선택) 하는데 또 반대로 풀어버렸다..
https://we1cometomeanings.tistory.com/279?category=1002194
[C 백준] 실버 3/ 1003번 피보나치 함수
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1..
we1cometomeanings.tistory.com
전에도 틀렸다. 비슷한 문제
이젠 좀 문제 유형을 외울수 있을 때도 되지 않았니?
728x90
반응형
'C > 중간고사 대비 (2022 1학기)' 카테고리의 다른 글
[C 백준] 실버 4/1026번 보물 (0) | 2022.04.02 |
---|---|
[C 백준] 대소문자 바꾸기 (0) | 2022.04.01 |
[C백준]실버 5/ 도비의 난독증 테스트 (0) | 2022.03.24 |
[C백준] 실버 5/ 1018번 체스판 다시 칠하기 (0) | 2022.03.20 |
[C언어 백준] 실버 4/ 1213번 팰린드롬 만들기 (0) | 2022.03.17 |
댓글