so4644009   5년 전

관리자를 더하지 않기 위해 관리자와 입력된 id를 비교했는데도 계속 답이 이상하게 나오네요ㅠㅠ 어디가 잘못 됐는지 알 수 있을까요?

sch20184011   4년 전

먼저, 이 소스를 실행했을 때 예제 5~8번에 대해 오답이 나오는 것을 확인했습니다.
일단 문제점을 지적해 드리자면, 이미 정답을 맞힌 아이디에 대해서는 이후에 오답을 제출하더라도 정답률에 반영되지 않습니다.
또한, 정답을 아직 맞추지 못한 아이디에 대해서도 정답률에 반영되지 않습니다.
(물론, 관리자 아이디에 대해서도 반영되지 않겠죠?)

그런데 이 소스에서는, 단순히 관리자 아이디를 제외한 전체 제출에 대한 정답률을 계산하는것 같습니다.
즉, 이미 정답을 맞힌 아이디의 추가 제출, 아직 정답을 맞추지 못한 아이디의 제출도 포함된 것으로 보여집니다.

문제 본문에서의 공식을 자세히 살펴보시면,
(정답자 수)/(각 정답자의 최초 정답까지 시도 횟수의 합)으로 나와 있는데요, (수식을 약간 변형했습니다.)
이 소스에서는 (정답 제출 수)/(관리자를 제외한 전체 제출 수)로 계산하는 것으로 보여집니다.
(단순히 전체 제출에 대한 정답률이 아닌, 정답자에 대해서만 계산을 해야겠죠?)

참고로, 이 문제를 풀기 위해서 저는 C++ STL의 을 사용한 적이 있습니다.
(혹시 C++에 대해 익숙하시면 한 번 찾아보시는 것도 나쁘진 않겠죠?)
물론, 를 사용하지 않고 C언어로도 풀 수 있는 방법도 있습니다. (하지만, 약간 힘들 수도 있을 것입니다.)

또 하나의 문제점을 지적해 드리자면, 정답과의 오차 범위는 10^(-9)까지 허용한다고 되어 있으나,
이 코드를 실행하면 소수점 6자리 까지만 출력됩니다.
하단의 printf 함수 내의 "%lf"를 "%.10f" 혹은 "%.10g"로 바꿔보세요.

이 문제를 반드시 해결하시기를 기원합니다.

sch20184011   4년 전

위의 글에서 C++ STL에서 누락된 부분이 있어서 다시 작성합니다.

C++ STL 중 map을 사용했습니다.

so4644009   4년 전

감사합니다ㅠㅠㅠㅠㅠ

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