ksw8758   4년 전

1003번 입력

· 첫째 줄에 테스트 케이스의 개수 T가 주어진다.

· 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. N은 40보다 작거나 같은 자연수 또는 0이다.

밑줄친 부분에 문제가 있는것 같습니다.

──────────────────────────────────────────────────

vector<pair<int,int> > mem(40,make_pair(0,0));

C++로 문제를 풀고있는데 벡터에 40개의 메모리만 할당을 한 후 N값에 40을 넣으면 쓰레기 값이 나와서

preview

41개의 메모리를 할당한 후에 N값에 40을 넣어야 올바른 값이 나오는데

preview

40개의 메모리만 할당한 코드가 정답으로 처리되었습니다.

──────────────────────────────────────────────────

40개의 메모리만 할당한 코드의 채점번호 16649391

41개의 메모리를 할당한 코드의 채점번호 16649406

jh05013   4년 전

배열 범위를 넘어서는 접근은 undefined behavior라고 하여, 어떤 결과가 나와도 이상하지 않습니다. 맞아도 잘못된 게 아니고, 틀려도 잘못된 게 아닙니다.

cheetose   4년 전

assert문으로 확인한 결과 N==40인 데이터는 존재합니다.

데이터 오류가 의심되면 assert문으로 확실하게 확인하고 글을 올려주시기 바랍니다.

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