From 07f9a755ee479b5ca3d6046f80fa49ed2b298663 Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Sun, 13 Sep 2026 19:58:47 +0900 Subject: [PATCH] =?UTF-8?q?1411.=20Number=20of=20Ways=20to=20Paint=20N=20?= =?UTF-8?q?=C3=97=203=20Grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...r of Ways to Paint N \303\227 3 Grid.java" | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/1411. Number of Ways to Paint N \303\227 3 Grid.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/1411. Number of Ways to Paint N \303\227 3 Grid.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/1411. Number of Ways to Paint N \303\227 3 Grid.java" new file mode 100644 index 00000000..6bf16752 --- /dev/null +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/1411. Number of Ways to Paint N \303\227 3 Grid.java" @@ -0,0 +1,85 @@ +/* 2차 풀이 + +1. 아이디어 : DP로 풀이 3가지 색깔을 겹치치않게 사용할 경우 패턴은 ABA와 ABC 존재 + 각 ABA -> ABC, ABA -> ABA, ABC -> ABC, ABC -> ABA 경우의 수를 각각 구해 dp로 계산 + 이때 2차원 DP를 따로 선언하지 않음(직전 상태값만 필요하므로) - 3ms + +2. 시간복잡도 : O(N) + +3. 자료구조/알고리즘 : DP + + */ + +class Solution { + public int numOfWays(int n) { + // 인접한 칸이 같은 색이면 안됨 + // 10^9 + 7의 나머지 + + int MOD = 1_000_000_000 + 7; + + // ABA = 6 + // ABC = 6 + + // ABA -> BAB, CAC, BCB (3) + // ABA -> BAC, CAB (2) + // ABC -> BCA, CAB (2) + // ABC -> BAB, BCB (2) + + long aba = 6;; + long abc = 6; + + for(int i=1; i ABC, ABA -> ABA, ABC -> ABC, ABC -> ABA 경우의 수를 각각 구해 dp로 계산 + 6ms 소요 + +2. 시간복잡도 : O(N) + +3. 자료구조/알고리즘 : DP + + */ + +class Solution { + public int numOfWays(int n) { + // 인접한 칸이 같은 색이면 안됨 + // 10^9 + 7의 나머지 + + int MOD = 1_000_000_000 + 7; + + // ABA = 6 + // ABC = 6 + + // ABA -> BAB, CAC, BCB (3) + // ABA -> BAC, CAB (2) + // ABC -> BCA, CAB (2) + // ABC -> BAB, BCB (2) + + long[][] dp = new long[2][n]; + // ABA + dp[0][0] = 6; + // ABC + dp[1][0] = 6; + + for(int i=1; i