[프로그래머스 JAVA] 42898. 등굣길

2026. 5. 15. 17:26·코딩테스트/프로그래머스

문제 링크


 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

접근 방법


집에서 학교까지 오른쪽과 아래쪽으로만 이동할 수 있으므로, 각 칸까지 도달하는 최단 경로의 개수를 누적하는 방식으로 해결합니다.
물웅덩이가 있는 위치는 puddle 배열에 따로 표시해두고, 해당 위치로는 경로를 더하지 않도록 처리합니다.

arr[i][j]에는 해당 위치까지 올 수 있는 경로의 개수를 저장합니다.
왼쪽에서 현재 칸으로 이동하는 경우와, 현재 칸에서 아래쪽으로 이동하는 경우를 각각 계산하며 값을 누적합니다.

소스 코드


import java.util.*;

class Solution {
    public int solution(int m, int n, int[][] puddles) {
        int[][] arr = new int[n + 1][m + 1];
        boolean[][] puddle = new boolean[n + 1][m + 1];

        for (int[] tmp : puddles) {
            puddle[tmp[1] - 1][tmp[0]] = true;
        }

        arr[0][0] = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j <= m; j++) {
                if (!puddle[i][j]) {
                    arr[i][j] = (arr[i][j] + arr[i][j - 1]) % 1000000007;
                }

                if (!puddle[i + 1][j]) {
                    arr[i + 1][j] = (arr[i + 1][j] + arr[i][j]) % 1000000007;
                }
            }
        }

        return arr[n][m];
    }
}

코드 설명


puddle 배열은 물웅덩이 위치를 저장하는 배열입니다.
문제에서 주어지는 물웅덩이 좌표는 [x, y] 형식이므로, 세로 위치는 tmp[1], 가로 위치는 tmp[0]을 사용합니다.

arr[0][0]을 1로 두고 시작하여 첫 번째 행의 왼쪽에서 오른쪽으로 값이 전달되도록 합니다.
각 칸에서는 왼쪽에서 올 수 있는 경우를 현재 칸에 더하고, 현재 칸의 값을 아래쪽 칸으로 전달합니다.

물웅덩이인 칸은 이동할 수 없기 때문에 해당 위치에는 값을 더하지 않습니다.
마지막으로 학교 위치에 해당하는 arr[n][m] 값을 반환합니다.

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 JAVA] 12900. 2 x n 타일링  (0) 2026.05.19
[프로그래머스 JAVA] 150368. 이모티콘 할인행사  (0) 2026.05.08
[프로그래머스 JAVA] 258707. n + 1 카드게임  (0) 2026.05.02
[프로그래머스 JAVA] 17686. [3차] 파일명 정렬  (0) 2026.04.27
[프로그래머스 JAVA] 68936. 쿼드압축 후 개수 세기  (0) 2026.04.23
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 JAVA] 12900. 2 x n 타일링
  • [프로그래머스 JAVA] 150368. 이모티콘 할인행사
  • [프로그래머스 JAVA] 258707. n + 1 카드게임
  • [프로그래머스 JAVA] 17686. [3차] 파일명 정렬
tkxx_ls
tkxx_ls
  • tkxx_ls
    tkxx_ls Story
    tkxx_ls
  • 전체
    오늘
    어제
    • 분류 전체보기 (119) N
      • 코딩테스트 (58) N
        • 백준 (40)
        • 프로그래머스 (18) N
      • 42Seoul (6)
        • libft (6)
      • Github (1)
      • 환경설정 (1)
        • 기타 (4)
        • c & c++ (3)
      • 잡설 (2)
      • CS (7)
        • 네트워크 (2)
        • 강화 학습 (4)
        • 자료구조 (8)
        • 알고리즘 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    신경망
    브루트포스
    인공지능
    gradle tool chain
    알고리즘
    java tool chain
    문자열 처리
    Baekjoon
    dfs
    백준
    Gradle 설정
    완전탐색
    BOJ
    Java
    programmers
    자료구조
    cs
    gradle java 설정
    머신러닝
    강화학습
    jdk 버전 관리
    분할정복
    구현
    java build
    백트래킹
    build 재현성
    프로그래머스
    gradle
    c++
    java 버전 호환성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
tkxx_ls
[프로그래머스 JAVA] 42898. 등굣길
상단으로

티스토리툴바