CodingTest/Java

Lv.2 : λ•…λ”°λ¨ΉκΈ°

Soom_1n 2023. 11. 23. 11:11

πŸ‘‰ 문제링크

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr



πŸ”Έ 문제 뢄석 πŸ”Έ

  • μœ„μ—μ„œλΆ€ν„° μ•„λž˜λ‘œ λ•…λ”°λ¨ΉκΈ°ν•˜λ©° 점수λ₯Ό μ΅œλŒ€ν•œ 크게 λ§Œλ“ λ‹€.
  • μ—°μ†λœ μ—΄μ˜ 땅을 λ°Ÿμ„ μˆ˜λŠ” μ—†λ‹€.
  • 점수의 μ΅œλŒ€κ°’μ„ λ°˜ν™˜ν•œλ‹€.

πŸ”Έ 문제 풀이 πŸ”Έ

  • 직전 ν–‰μ˜ κ°’λ“€ 쀑 같은 열이 μ•„λ‹Œ κ°’λ“€ 쀑 μ΅œλŒ€κ°’μ„ λˆ„μ ν•΄ λ‚˜κ°„λ‹€.
  • λ§ˆμ§κ°€ ν–‰μ˜ κ°’λ“€ 쀑 μ΅œλŒ€κ°’μ„ λ°˜ν™˜ν•œλ‹€.

πŸ”Έ μ½”λ“œ πŸ”Έ

class Solution {
    int solution(int[][] land) {
        int[][] dp = new int[land.length][4];

        for (int i = 0; i < 4; i++) {
            dp[0][i] = land[0][i];
        }

        for (int i = 1; i < land.length; i++) {
            for (int j = 0; j < 4; j++) {
                for (int k = 0; k < 4; k++) {
                    if (j != k) {
                        dp[i][j] = Math.max(dp[i][j], dp[i-1][k]);
                    }
                }
                dp[i][j] += land[i][j];
            }
        }

        int answer = 0;
        for (int i = 0; i < 4; i++) {
            answer = Math.max(answer,dp[land.length-1][i]);
        }

        return answer;
    }
}

πŸ”Έ μ½”λ“œ 해석 πŸ”Έ

  • ν˜„μž¬ 인덱슀의 μ΅œλŒ€κ°’μ„ dp배열에 μ €μž₯ν•΄κ°€λ©° κ³„μ‚°ν•œλ‹€.
    • 직전 ν–‰μ˜ κ°’λ“€ 쀑 ν˜„μž¬ ν–‰κ³Ό λ‹€λ₯Έ μ—΄μ˜ κ°’ 쀑 μ΅œλŒ€κ°’μ„ μ €μž₯ν•œλ‹€.
  • 계산을 λ§ˆλ¬΄λ¦¬ν•˜κ³  dpλ°°μ—΄μ˜ λ§ˆμ§€λ§‰ ν–‰ κ°’λ“€ 쀑 μ΅œλŒ€κ°’μ„ λ°˜ν™˜ν•œλ‹€.

 


πŸ”Έ end πŸ”Έ

  • λ‹¨μˆœ κ΅¬ν˜„μœΌλ‘œ 막 풀이 ν•œ λŠλ‚ŒμΈλ°, μ—΄μ˜ 길이가 4 정도 뿐이라 νš¨μœ¨μ„± λ¬Έμ œλ„ μ—†μ—ˆλ˜ 것 κ°™λ‹€.
  • λ‹€λ₯Έ 풀이λ₯Ό λ³΄λ‹ˆ, μž¬κ·€λ©”μ„œλ“œλ‘œ λΉΌμ„œ ν•œ 인덱슀λ₯Ό μ œμ™Έν•œ μ΅œλŒ€κ°’μ„ λ°˜ν™˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν’€μ΄ν•œ 방법도 μžˆμ—ˆλ‹€.

 
728x90