• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

Unique path

20.06.06 16:06 작성 조회수 137

1

마지막 return 이 왜 map[m-1][n-1]인지 모르겠습니다.

과정 중에서 

int[][] map = new int[m][m];

for (int i = 0; i < m; i++) {

map[i][0] = 1;

}

for (int i = 0; i < n; i++) {

map[0][i] = 1;

}

// 2

for (int i = 1; i < m; i++) {

for (int j = 1; j < n; j++) {

map[i][j] = map[i - 1][j] + map[i][j - 1];

}

}

이과정은 이해가 되는데 마지막에 map[3][2] 를 구한다햇을때 

return map[2][1]; 을 리턴하게되면 답이안나올거같은데....

답변 1

답변을 작성해보세요.

1

안녕하세요~

정말 열심히 하시는군요~!! 꼭 좋은 소식 기대하겠습니다~

이번문제는 이차원배열이라서 헷갈릴수 있습니다. (2차원 어레이는 코딩셤에 정말 많이 나옵니다. 리스트 변환도 가능해야함)

이차원배열이 헷갈릴때는 일일이 다 그려 보는게 편합니다.

좌표마다 값을 다 체크해보세요. 저는 아예 프린트를 이용해서 호출 전후 좌표와 좌표값을 정확히 파악하는걸 추천드립니다.

그래야 나중에 안 헷갈립니다.

여기 문제중에 Graph(dfs&bfs) 관련된 문제보면 print 함수를 직접해서 위치를 정확히 파악하고 있으니 참고 부탁드립니다.

질문주신 내용관련 프린트 함수 추가했습니다.

1. 결과값

map[0][0] 1  map[0][1] 1  

map[1][0] 1  map[1][1] 2  

map[2][0] 1  map[2][1] 3  

map[2][1]

3

2. 코드에 프린트함수 추가

  public static int uniquePaths(int m, int n) {

Integer[][] map = new Integer[m][n];

for(int i=0; i<m; i++) {

map[i][0] = 1;

}

for(int i=0; i<n; i++) {

map[0][i] = 1;

}

for(int i=1; i<m; i++) {

for(int j=1; j<n; j++) {

map[i][j] =map[i][j-1]+map[i-1][j];

}

}

print(map);

System.out.println("map["+(m-1)+"]["+(n-1)+"]");

return map[m-1][n-1];

  }

  

  public static void print(Integer[][] map) {

  for(int i=0; i<map.length; i++) {

  for(int j=0; j<map[i].length; j++) {

  System.out.print("map["+i+"]["+j+"] "+map[i][j]+"  ");

  }

  System.out.println();

  }

  }