play 함수의 인자 int pan[][20]은 주소값을 넘겨주는 방식이기 때문에 함수가 작동하면 251번째 줄에서 주소값을 넘겨준 변수 int game_pan[20][20]의 값이 바뀌게 됩니다.
글에 쓰신 "근데 이때 2번쨰 실행해서 나온 값이 동일해야하는데 유지되는거 같지않습니다.. ㅜㅜ" 가 이것 때문에 일어나는 현상이고요.
해결법으론 함수 안에서 int pan[][20]의 값을 복사해서 사용하는(값을 직접적으로 바꾸지 않는) 방법 등이 있겠네요.
jisu0415 4년 전
제가 계속 디버깅해본바로는,
질문에 올라와있던 테스트케이스 중 하나인데
3
256 8 128
16 0 256
0 8 0
일 경우 정답이 위-오른쪽-위-왼쪽-위 로 할 경우 최대 512가 나와야 하는데 저는 256이 나옵니다.
이것을 재귀로 안하고 바로 위-오른쪽-위-왼쪽-위 로 한번에 진행할 수 있게 코드를 바꾸어 진행해보았을 때는 정상작동했고,
재귀로 다시 확인했을 때, 재귀를 실행하는 중에 예를들어
1번쨰실행-2번째실행-3번째실행-4번째실행-5번째실행 이것이 재귀적으로 반복된다고 하면
2번쨰 실행해서 방향에따라 3번째 실행을 4회 하게되잖아요, 근데 이때 2번쨰 실행해서 나온 값이 동일해야하는데 유지되는거 같지않습니다.. ㅜㅜ (확실하진 않지만, 제가 확인했을 때는 그런것같습니다)
코드는 방향별로 값 두개를 합치는 것과, 한쪽으로 밀어주는 코드를 다르게 작성하였고, 5회를 끝내면 최대값을 찾는 코드입니다.
오작동 되는 테스트케이스를 하나 더 첨부하겠습니다
3
0 8 1024
4 0 4
0 1024 32