본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 11048번 이동하기

by 현장 2026. 1. 8.

-Code

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

public class BOJ11048 {
    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[][] miro = new int[n + 1][m + 1];
        for (int row = 1; row <= n; row++) {
            st = new StringTokenizer(br.readLine());
            for (int col = 1; col <= m; col++) {
                miro[row][col] = Integer.parseInt(st.nextToken());
            }
        }
        // 3방향으로 확인하나 위와 왼쪽만 확인하면
        // 왼쪽위도 확인과 같음
        for (int row = 1; row <= n; row++) {
            for (int col = 1; col <= m; col++) {
                int max = Math.max(miro[row - 1][col], miro[row][col - 1]);
                miro[row][col] += max;
            }
        }

        System.out.println(miro[n][m]);
    }
}

처음에 3방향 검사와 if문을 통해 범위 계산을 해서 맞았으나 배열 범위를 1씩 늘리고 위와 왼쪽만 검사하면 왼쪽 위 대각선 방향은 검사 안해도 된다는 것을 알고 다시 수정해 보았습니다.