Algorithm/Baekjoon

[Algorithm/Baekjoon] ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ - 2169 (G2/JAVA)

dpdms2148 2023. 6. 23. 17:03
728x90

๐Ÿ“‘๋ฌธ์ œ๋งํฌ

2169๋ฒˆ: ๋กœ๋ด‡ ์กฐ์ข…ํ•˜๊ธฐ

๐Ÿ’ป์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[][] map = new int[n][m];
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < m; j++) {
                map[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        int[][] dp = new int[n][m];
        dp[0][0] = map[0][0];
        //dp[0][0~m]์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •
        for (int i = 1; i < m; i++) {
            dp[0][i] = dp[0][i - 1] + map[0][i];
        }

        //dp[1~n][0~m]์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •
        for (int i = 1; i < n; i++) {
            int[] left = new int[m];
            int[] right = new int[m];
            //์™ผ์ชฝ ๋ถ€ํ„ฐ ํƒ์ƒ‰(์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰)
            left[0] = dp[i - 1][0] + map[i][0];
            for (int j = 1; j < m; j++) {
                left[j] = Math.max(dp[i - 1][j], left[j - 1]) + map[i][j];
            }
            //์˜ค๋ฅธ์ชฝ ๋ถ€ํ„ฐ ํƒ์ƒ‰(์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰)
            right[m - 1] = dp[i - 1][m - 1] + map[i][m - 1];
            for (int j = m - 2; j > -1; j--) {
                right[j] = Math.max(dp[i - 1][j], right[j + 1]) + map[i][j];
            }
            for (int j = 0; j < m; j++) {
                dp[i][j] = Math.max(left[j], right[j]);
            }
        }

        System.out.println(dp[n - 1][m - 1]);
    }
}

โณํšŒ๊ณ 

  • ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•˜๋ฉด ์‰ฌ์šด ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ๋ชจ๋‘ ์›€์ง์ผ ์ˆ˜ ์žˆ์–ด์„œ ์–ด๋ ค์› ๋‹ค.
  • ๋‹จ์ˆœํ•˜๊ฒŒ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ ๋ชจ๋‘ ๊ณ„์‚ฐํ•œ ํ›„ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.
728x90