kgh12389   3년 전

열심히 짠다고 짠건데 도저히 저기서 어떻게 더 나아가야 될지 몰라서 고수님들의 의견을 구합니다.

일단 시퀸스는 

1. 케이스 수를 입력 받는다.

2. 총 점수(p),평균을 넘는 학생 수(t),평균을 넘는 학생의 백분위 (q)초기화

3. 학생의 수 입력 및 각 학생의 점수 입력

4. 점수의 평균을 구함

5. 점수의 평균을 넘어가는 학생을 구함

6.퍼센트를 구함( 이 부분이 가장 불확실한 부분입니다)

이 시퀀스나 저의 코드에 어떤 문제가 있는지 집어주시면 감사하겠습니다.

tor012   3년 전

1. 현재소스에서 4번줄의 r과 5번줄의 b를 바꾸기만해도 정답통과는됩니다.

2. 시퀀스라고 언급하신 부분은 문제를 푸는데 적합합니다.

3. 14번 줄에 따라 b는 학생의 수를 저장하는 변수로 생각되는데 "학생의 수" 는 정수입니다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고

그리고 20번째 줄에 따라 r은 점수의 평균을 저장하는 변수로 생각됩니다. (총점/인원수)

둘의 자료형을 반대로 작성하셔서 문제가 되었습니다.

4. 위의 1. 및 3. 을 피드백하셨다는 기준에서 20번 줄이 문제가됩니다.

p/b 의 결과를 r에 저장하지만 p/b 의 p와 b 둘다 int형이므로 int형끼리의 나눗셈 연산이므로 나머지 부분이 날아갑니다.

이미 나머지가 날아간 평균을 r에 저장해 소수 자료형에 저장해도 나머지는 .000 인 상태입니다.

즉 부정확한 결과가 날 수 있는 부분이고 이를 방지하기위해 p 혹은 b를 부동 소수 자료형으로 설정하거나, 캐스팅을 통해 소수점이 날아가는 연산이 되는것을 방지해야 합니다. -> 보통의 경우 위와같은 사항을 틀렸습니다로 판정하기위한 테스트케이스가 있으나 위 문제에선 해당 테스트 케이스가 없는 듯 합니다.

tor012   3년 전

4.를 피드백한다면 다음과 같습니다.

tor012   3년 전

어제 설명드린부분에서


소숫점 이하자리가 날아가서 잘못된 케이스가 있을 수 있다고 설명드렸는데

소숫점이하가 날아가는건 맞으나

이 문제에서는 비교하는 점수들이 정수이기에 소숫점이 날아가도 문제되지않습니다.


int끼리 나눗셈을하면 결과가 정수가 나오지만, 이 문제에서 이 부분이 오류를 일으키지는 않는다 라고 생각하시면 될듯합니다.

kgh12389   3년 전

감사합니다. 자세히 알려주셔서 애매한 부분에서 이해가 되어 도움이 많이 됐던거 같습니다. 신경써서 자세히 답변드린점 너무 감사합니다. 

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