Skip to content

Conversation

@suyeun84
Copy link
Contributor

🧷 문제 링크

https://www.acmicpc.net/problem/17404

🧭 풀이 시간

25분

👀 체감 난이도

✏️ 문제 설명

1번 집의 색은 2번, N번 집의 색과 같지 않아야 한다.
N번 집의 색은 N-1번, 1번 집의 색과 같지 않아야 한다.
i(2 ≤ i ≤ N-1)번 집의 색은 i-1, i+1번 집의 색과 같지 않아야 한다.

🔍 풀이 방법

3차원 dp를 사용해서 첫집이 빨강,초록,파랑일 때의 최솟값을 각각 구했다.

⏳ 회고

특별한 예외가 없어서 구현만 하면 됐다.

@suyeun84 suyeun84 added the success 👍 해설을 보지 않고 풀었을 때 label Feb 12, 2025
@ShinHeeEul ShinHeeEul merged commit 0ced20e into main Feb 12, 2025
1 check passed
@suyeun84
Copy link
Contributor Author

suyeun84 commented Feb 13, 2025

--코드 간략ver--

import java.util.*;
import java.io.*;

class Solution
{
	public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int N = Integer.parseInt(st.nextToken());
        int[][] board = new int[N][3];
        int answer = Integer.MAX_VALUE;
        
        for (int i = 0; i < N; i++) {
        	st = new StringTokenizer(br.readLine());
        	for (int j = 0; j < 3; j++) {
        		board[i][j] = Integer.parseInt(st.nextToken());
        	}
        }
        for (int first = 0; first < 3; first++) {
            int[][] dp = new int[N][3];
            for (int[] row : dp) Arrays.fill(row, 1001);

            dp[0][first] = board[0][first];
            
            for (int i = 1; i < N; i++) {
                dp[i][0] = board[i][0] + Math.min(dp[i - 1][1], dp[i - 1][2]);
                dp[i][1] = board[i][1] + Math.min(dp[i - 1][0], dp[i - 1][2]);
                dp[i][2] = board[i][2] + Math.min(dp[i - 1][0], dp[i - 1][1]);
            }
            
            for (int last = 0; last < 3; last++) {
                if (first != last) {
                    answer = Math.min(answer, dp[N - 1][last]);
                }
            }
        }
        System.out.println(answer);
	}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants