JUMPGAME 왜 맞을까요? abc3242 문제해결전략 책에 있는 소스를 보고 제가 나름대로 코드를 바꾸었다가, 자꾸 오답이 나서 책과 비슷하게 쓰니 맞았습니다. 제 눈에 보이는 차이는 원래의 코드는 메모이제이션 배열을 인덱스로 직접 접근했고, 지금 코드는 참조를 쓴 것 밖에 없습니다. 결과에서 왜 차이가 나는지 도저히 모르겠는데 혹시 알려주실 수 있나 싶어 올려봅니다. 원래의 코드입니다. (메인함수에선 차이가 없습니다.) int board[100][100]; int memo[100][100]; int jump(int n, int row, int col){ if(memo[row][col] != -1){ return memo[row][col]; } else if(row == n-1 && col == n-1){ return 1; } else if(row >= n || col >= n){ return 0; } int step = board[row][col]; bool answer = (jump(n, row+step, col)) || (jump(n, row, col+step)); memo[row][col] = answer; return answer; } 도저히 답이 나오지 않아 책과 유사하게 쓴 코드입니다. #include <cstdio> using namespace std; int board[100][100]; int memo[100][100]; int jump(int n, int row, int col){ if(row == n-1 && col == n-1){ return 1; } else if(row >= n || col >= n){ return 0; } int &ret = memo[row][col]; if(ret != -1){ return ret; } int step = board[row][col]; return ret= (jump(n, row+step, col)) || (jump(n, row, col+step)); } 6년 전
1개의 댓글이 있습니다. gzone130 answer 변수는 bool 타입인데, int 형 2차원 배열에 그 값을 대입해서 오류가 나는게 아닐까요? VS나 에디터는 이러한 오류를 스스로 수정하기도 하기 때문에.. 물론 전체 코드를 못 봐서 제 추측입니다. 6년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
abc3242
문제해결전략 책에 있는 소스를 보고 제가 나름대로 코드를 바꾸었다가, 자꾸 오답이 나서 책과 비슷하게 쓰니 맞았습니다.
제 눈에 보이는 차이는 원래의 코드는 메모이제이션 배열을 인덱스로 직접 접근했고, 지금 코드는 참조를 쓴 것 밖에 없습니다.
결과에서 왜 차이가 나는지 도저히 모르겠는데 혹시 알려주실 수 있나 싶어 올려봅니다.
원래의 코드입니다. (메인함수에선 차이가 없습니다.)
도저히 답이 나오지 않아 책과 유사하게 쓴 코드입니다.
6년 전