quddbs0409   1년 전

1 4      0 6    
3 5    //1 4 ㅁ 
0 6      2 13  
5 7      3 5  ☆
3 8      3 8 
5 9      5 7  ㅁ ☆
6 10     5 9 
8 11     6 10 
8 12     8 11  ㅁ ☆
2 13     8 12  (ㅁ ☆)
12 14    12 14  ㅁ ☆
예제     예제시작시간(오름차순정렬)
ㅁ=예제 정답 ☆= 1 4를 없앴을때의 정답
여기서 밑에 코드를 활용해 1 4를 1 7과 같은 조건에 포함되지 않는 데이터로 입력하면 답이 3으로 나오고 정답처리가 됩니다.
(근거 : 1 4를 아예 입력을 안 하는 경우 4로 답이 나옴)
하지만 실제정답은 4인걸로 생각됩니다.
채점에 논리적 오류가 있는걸로 보여집니다. 수정부탁드립니다.


제가 잘못 생각한 부분이 있다면 조언부탁드립니다.

sukha5364   1년 전

로직에는 문제가 없는 것으로 보이나 2022 visual studio로 돌린 결과 t[0]에 1, 7이 들어있었습니다. 채점서버와 vs의 환경차이로 발생한 문제가 아닌가 생각해봅니다.

quddbs0409   1년 전

dev로 돌렸으며 1 7이 들어가서 3이 나오면 잘못된 정답인거 아닌가요? 제가 찾은 답은 4개일텐데요..

djm03178   1년 전

채점 프로그램은 스페셜 저지 태그가 붙어있지 않은 이상 '논리적 판단' 자체를 하지 않습니다. 그저 이미 주어져 있는 정답 파일과 글자 단위로 비교해서 같으면 정답이고, 틀리면 오답으로 판정할 뿐입니다.

djm03178   1년 전

https://ideone.com/dHIJEF 말씀하신 예제 4로 출력됩니다.

djm03178   1년 전

제가 정확히 알고 있는 것인지는 모르겠으나, cmp 함수의 구현이 잘못된 것 같습니다. qsort에 넘겨주는 비교 함수는 a<b이면 음의 정수를, a==b이면 0을, a>b이면 양의 정수를 반환해야 합니다. 그런데 이 코드는 오로지 0과 1만 반환합니다. a<b로 판정해야 하는 경우 음의 정수가 아니라 0을 반환하고 있기 때문에 qsort의 구현체에 따라서는 이 경우 두 원소가 같다고 했으므로 둘의 위치를 그냥 바꿔치기를 하더라도 문제가 없다는 것입니다. 따라서 환경에 따라서 서로 다른 정렬 결과가 나올 수 있습니다.

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