프로그래머스 3단계 : 등굣길 (Java 자바)

2023. 8. 28. 23:25·💻 코딩테스트/programmers
728x90

문제 설명

계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다.

아래 그림은 m = 4, n = 3 인 경우입니다.

가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다.

격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요.

 

 

제한사항

  • 격자의 크기 m, n은 1 이상 100 이하인 자연수입니다.
    • m과 n이 모두 1인 경우는 입력으로 주어지지 않습니다.
  • 물에 잠긴 지역은 0개 이상 10개 이하입니다.
  • 집과 학교가 물에 잠긴 경우는 입력으로 주어지지 않습니다.

 

입출력 예

 

 

풀이

지난번에 풀었던 정수삼각형 문제와 비슷한 유형이어서 바로 DP 알고리즘을 떠올렸습니다.

그러나... 문제에서 x, y 좌표를 바꿔서 출제한 것 같아서 헷갈렸어요. 🥺

문제를 풀 때 (y, x) 좌표로 풀러야 답이 나오더라고요.

water라는 배열을 만들어서 물 웅덩이가 있는 칸은 구분하려고 했습니다.

물 웅덩이가 있는 칸은 true로 초기화합니다.

 

import java.util.*;
class Solution {
    public int solution(int m, int n, int[][] puddles) {
        int[][] map = new int[m+1][n+1];
        boolean[][] water = new boolean[m+1][n+1];
        
        for (int i = 0; i < puddles.length; i++) {
            int x = puddles[i][0];
            int y = puddles[i][1];
            water[x][y] = true;
        }
        
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                if (water[i][j]) continue;
                
                if (i == 1 && j == 1) {
                    map[i][j] = 1;
                } else {
                    map[i][j] = (map[i-1][j] + map[i][j-1]) % 1000000007;
                }
            }
        }
        
        return map[m][n] % 1000000007;
    }
}
728x90
저작자표시 비영리 변경금지 (새창열림)

'💻 코딩테스트 > programmers' 카테고리의 다른 글

프로그래머스 2단계 : 최솟값 만들기 (Java 자바)  (0) 2023.08.29
프로그래머스 3단계 : 야근 지수 (Java 자바)  (0) 2023.08.28
프로그래머스 2단계 : JadenCase 문자열 만들기 (Java 자바)  (0) 2023.08.28
프로그래머스 3단계 : 최고의 집합 (Java 자바)  (1) 2023.08.28
프로그래머스 3단계 : 이중우선순위큐 (Java 자바)  (0) 2023.08.28
'💻 코딩테스트/programmers' 카테고리의 다른 글
  • 프로그래머스 2단계 : 최솟값 만들기 (Java 자바)
  • 프로그래머스 3단계 : 야근 지수 (Java 자바)
  • 프로그래머스 2단계 : JadenCase 문자열 만들기 (Java 자바)
  • 프로그래머스 3단계 : 최고의 집합 (Java 자바)
gxxg
gxxg
함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록
  • gxxg
    공공
    gxxg
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • ☁️ 구름 x 카카오 Deep Dive 풀스택 (7)
        • html, css (1)
        • Java (3)
        • 스프링 MVC (0)
      • 💻 코딩테스트 (89)
        • 백준 (2)
        • programmers (87)
      • SQLD (1)
      • Language (3)
        • Java (2)
        • JavaScript (1)
      • Style Sheet (0)
        • CSS (0)
        • SCSS & SASS (0)
      • DBMS (2)
        • Oracle (2)
        • MySQL (0)
        • postgresql (0)
        • 데이터베이스 기초 이론 (0)
      • React (0)
      • SpringBoot (0)
      • JSP (2)
      • 알고리즘 (0)
      • 2023-02 몰입형 SW 정규 교육 (24)
        • 9월 프로젝트 (8)
      • 벽돌깨기 (4)
      • Etc (4)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    junit 테스트
    2단계
    HTML
    티스토리챌린지
    톰캣
    이클립스
    프로젝트 구조
    JSP
    LV3
    회원 관리 시스템
    자바
    구현체
    Lv0
    programmers
    코딩테스트
    javascript
    spring
    springboot
    CSS
    0단계
    Lv2
    DFS
    프로그래머스
    오블완
    코테
    eclipse
    자바스크립트
    POST
    3단계
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gxxg
프로그래머스 3단계 : 등굣길 (Java 자바)
상단으로

티스토리툴바