하루에 한 문제

[프로그래머스] 등굣길 -Java 본문

알고리즘/프로그래머스

[프로그래머스] 등굣길 -Java

dkwjdi 2020. 12. 28. 17:15

https://programmers.co.kr/learn/courses/30/lessons/42898

 

코딩테스트 연습 - 등굣길

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

programmers.co.kr

class Solution {
	    public int solution(int m, int n, int[][] puddles) {
	        int answer=0;
	        int map[][]=new int[n][m];
	        
	        for(int i=0; i<puddles.length; i++) {
	        	map[puddles[i][1]-1][puddles[i][0]-1]=-1;
	        }
	        
	        for(int j=1; j<m; j++) {
	        	if(map[0][j-1]==-1) map[0][j]=-1;
	        }
	        for(int i=1; i<n; i++) {
	        	if(map[i-1][0]==-1) map[i][0]=-1;
	        }
	        
	        for(int i=0; i<n; i++) {
	        	for(int j=0; j<m; j++) {
	        		if(map[i][j]==-1) continue;
	        		else if(j==0 || i==0) map[i][j]=1;
	        		else if(map[i][j-1]==-1 || map[i-1][j]==-1)          
	        			map[i][j]=(map[i][j-1]+map[i-1][j]+1)%1000000007;
	        		else  
	        			map[i][j]=(map[i][j-1]+map[i-1][j])%1000000007;
	        	}
	        }
	        answer= map[n-1][m-1];
	        return answer==-1? 0:answer;
	    }
	}

소요시간 :  40분

 

실수가 많았던 문제입니다..ㅜㅜ...

일단 문제 푸는 방식은 고등학교때 많이 구했던 방식으로

격자에 숫자를 써가면서 구하는 방식으로 풀었습니다!

 

이렇게 풀면 되는데 중간에 실수를 많이 했습니다.

 

실수 1.puddles배열이 행과 열이 반대로 들어오는데 그거를 모르고 행, 열 그대로 받아서 런타임 에러가 났습니다..ㅎㅎ

실수 2.만약 (0,1), (1,0)이 둘다 -1 이라면 경우의 수가 없습니다. 그래서 결국 마지막에 -1을 뽑는데 답은 0을 뽑아야 합        니다.

실수 3. 만약 (0,1)이 물웅덩이라면 (0,2) (0,3),,,,,(0,m)까지는 다 물웅덩이로 해야되는데 (0,1)만 물웅덩이로 표시하고 나              머지 부분은 그냥 1로 표현했습니다.

 

실수가 많았던 문제입니다..ㅜㅜ 

 

 

Comments