konichan7   4년 전

안녕하세요.
질문드리고 싶은게 있습니다.
아래에 두개의 코드를 첨부했습니다.
1번 코드는 틀렸다고 나왔고 2번코드는 정답이라고 나왔습니다.

두 각각의 코드는 윗 부분은 똑같구요. 출력형태가 다릅니다.
1번 코드는 output[]이라는 배열에 각각의 테스트케이스에 대한 결과를 저장해서 나중에 한 번에 출력하도록 했습니다.
2번 코드는 출력결과를 저장하는 배열을 따로 두지 않고, 매 테스트케이스의 실행 후에 바로 출력을 하도록 했습니다.

결과는 동일하게 나왔었는데 어떤 부분에서 틀렸습니다와 정답입니다의 차이가 발생했을까요?
지적 부탁드리겠습니다. 감사합니다.

prarie   4년 전

실행 환경에 따라 다르겠지만, output 배열에 문제가 있습니다.

1. 일단 배열을 상수가 아닌 변수로 크기 할당을 하면 안 됩니다.

(하지만 이건 문제가 되지 않습니다. -> 제가 알기론 최소 GCC 컴파일러에서는 되는 걸로 압니다.)

2. 배열이 할당되기 전 testcase 변수가 초기화가 되어 있지 않습니다.

즉 쓰레기 값이 들어가 있는데 이걸로 배열의 크기를 정해주니 무슨 일이 일어날지 모릅니다.


위 소스에서 scanf 전에 testcase 의 값을 출력해보시길 바랍니다.

konichan7   4년 전

@prarie
말씀하신 부분 중에 2번을 보니 왜 틀렸다고 나오는지 명확해졌습니다.
원래 의도는 아래와 같은 순서로 쓰려했는데 실수를 하고도 알아차리지 못했네요..

또한 지금까지 배열을 상수로 크기 할당을 많이 해왔었는데 좋지 않은 습관이란걸 알았습니다.

지적해주셔서 감사합니다!

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