bsgreentea   4년 전

1079 문제를 푸는 과정에서 궁금한 점이 생겨 질문드립니다.

두 가지 방식으로 제출을 했는데, 두 방식의 유일한 차이는 참가자의 유죄 지수를 나타내는 crime 배열의 위치입니다.

(하단에 맞았습니다를 받은 코드와 틀렸습니다를 받은 코드를 차례로 올려두었습니다.)

맞았습니다를 받은 첫 번째 코드의 경우는 crime 배열을 전역으로 선언하였고(,10, 48 ~ 50번째 줄),

틀렸습니다를 받은 두 번째 코드의 경우는 game() 함수 내에서 crime 배열을 temp라는 배열로 옮겨 사용했습니다(117, 118번째 줄).

두 번째 방식이 왜 틀렸는지를 도저히 못찾겠습니다.

무슨 차이가 있어서 결과가 다르게 나오는지 궁금합니다. 코드 한 번 봐주시면 감사하겠습니다ㅜㅜ

shw2495   3년 전

이미 아실 것 같지만 밑의 코드가 틀린 이유는 temp=crime할 때 값을 copy하는 것이 아닌 temp가 crime 배열을 가리켜서(즉, temp 배열과 crime 배열이 같아서) temp가 바뀌면 crime도 같이 바뀌기 때문입니다.

118번 줄 다음에 temp와 crime 메모리 값을 출력해보면 정확히 같은 것을 알 수 있을 것입니다. (혹은 값을 출력해보면 temp가 바뀜에 따라 crime도 바뀌는 것을 알 수 있을 것입니다.)

bsgreentea   3년 전

친절한 답변 감사합니다!

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