Algorithm/Baekjoon

[백준 11048 - Java] 이동하기

tjddneva 2022. 2. 22. 01:03

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

 

11048번: 이동하기

준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는

www.acmicpc.net

 

매우 기초적인 DP 문제이다. 하지만 문제는 그게 아니다. 드디어 c++ 에서 자바로 넘어가기 시도 중이다. 자바는 고통이다. 하 무슨 입력 받는거 부터 매우 불편하다. c++ 이었으면 슉샥슉샥 쇽 하고 끝났을텐데 이건 정말 입출력이 짜증난다. 사실 다 그지같다. 하 

 

풀이는 그냥 대각선, 왼, 오 중에서 제일 큰 거 받아와서 현재 값이랑 더해주면 끝이다. 

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String[] str = br.readLine().split(" ");

		int n = Integer.parseInt(str[0]);
		int m = Integer.parseInt(str[1]);

		int[][] miro = new int[n + 1][m + 1];

		for (int i = 1; i <= n; i++) {
			str = br.readLine().split(" ");
			for (int j = 1; j <= m; j++) {
				miro[i][j] = Integer.parseInt(str[j - 1]);
			}
		}

		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				miro[i][j] += Math.max(miro[i - 1][j - 1], Math.max(miro[i - 1][j], miro[i][j - 1]));
			}
		}

		bw.write(miro[n][m] + "\n");
		bw.close();
	}

}

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준 12904 - c++] A와 B  (0) 2022.03.30
[백준 11049 - Java] 행렬 곱셈 순서  (0) 2022.02.24
[백준 23599 - C++] 밥  (0) 2022.02.16
[백준 1107 - c++] 리모컨  (0) 2022.02.06
[백준 12107 - c++] 약수 지우기 게임 1  (1) 2022.02.06