본문 바로가기
C/중간고사 대비 (2022 1학기)

[C 백준] 실버 1/ 1149번 RGB 거리

by Meaning_ 2022. 3. 26.
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
반응형

댓글