curve4403   4년 전

대략적인 알고리즘은 이렇습니다.

map에서 h의 n에 사다리를 놓으면, n에서 n + 1, 혹은 n + 1에서 n으로 세로 선을 갈아탈 수 있다는 의미로,

map의 [h][n]에는 n + 1로 기록하고, [h][n +1]에는 n으로 기록했습니다.

이 후, chk_result 함수에서 각 n(열)의 처음 h가 1일 때부터 끝 부분 H일 때까지 검사하여, 처음 지점의 n과 끝 지점의 n 값이 다르면 올바르지 않은 결과(i번 사다리를 탔을 때 i번으로 나오지 않는)로 판단합니다.

문제에서 제시된 TC와 질문 게시판에 있는 반례를 모두 찾아 돌렸는데 에러가 나지 않았습니다. 하지만 백준에 제출 시, 

  1. map의 크기를 [11][31]로 했을 때 런타임 에러가 발생했습니다.
  2. 그래서 map의 크기를 [100][100]으로 늘렸을 때에는 틀렸습니다.

혹시 코드에서 제가 놓치거나 잘 못 작성한 알고리즘이 있는지 확인해주시면 정말 감사하겠습니다..! 

한 달 전에도 같은 문제로 포기하고, 어제 다시 풀었는데도 같은 문제가 발생해서 매우 혼란스럽네요.. 부끄러움을 무릎쓰고 부탁드립니다..!

luniro   4년 전

map[h][n]이라서 map[31][11]이 돼야합니다

댓글을 작성하려면 로그인해야 합니다.