728x90
다소 재치있는 제목을 가지고 있는 이 문제는 대학생 새내기들이 가지고 있는 흔한 생각인"나는 반에서 평균 이상은 하고 있겠지 ㅋㅋ"
에 대한 슬픈 진실을 알려주기 위해 만들어진 문제라고 한다.
문제 분석
테스트 케이스의 개수 C테스트 케이스의 학생 수, 학생 수 만큼의 점수를 입력
입력받은 점수의 평균값을 구한 후 구성원 중 몇 %가 평균을 넘는 지 구하는 문제
제약
학생 수는 1~1000의 정수
점수는 0~100의 정수
입력
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
출력
40.000%
57.143%
33.333%
66.667%
55.556%
유의사항
소숫점 셋째 자리까지 모든 경우의 수에서 출력하기
작동하지만 오답인 코드
#테스트 케이스 개수 C
C = int(input())
C_list = []
for i in range(C):
#평균 이상의 학생을 담을 변수 count 초기화
count = 0
#C_list에 학생 수와 점수 입력
C_list = list(map(int, input().split()))
#print(C_list,'_line 10_ C_list')
N = C_list[0]
#배열의 수 전부 합산, 학생 수 만큼 뺀 후 평균 구하기
C_sum = sum(C_list) - N
C_ave = C_sum/N
#print(C_ave,'_line 15_ C_ave')
#C_list에 들어간 수 중에 C_ave보다 큰 수가 발견되면 count ++
for i in range(len(C_list)):
if i != 0:
if C_list[i] > C_ave:
count+=1
#print(count,'_line 21_ count')
#C_p라는 상위 퍼센트를 담는 변수를 지정 후 round를 이용해 소숫점 조절
C_p = round(count/N*100, 3)
print("%s%%" %(C_p))
정상적으로 작동이 되지만 틀린 부분이 있다는 것은 출제자의 의도와는 다른 방식으로 풀었다고 볼 수 있다.
정답코드
오답의 이유를 찾아본 결과
첫 번째 예시에서 소숫점 셋째 자리까지 출력되지 않은 것이 그 이유인 것으로 나왔다.
위 부분을 round 대신에 f-string을 활용한 소숫점 제한으로 교체했을 때 정답처리 되었다.
#테스트 케이스 개수 C
C = int(input())
C_list = []
for i in range(C):
#평균 이상의 학생을 담을 변수 count 초기화
count = 0
#C_list에 학생 수와 점수 입력
C_list = list(map(int, input().split()))
#print(C_list,'_line 10_ C_list')
N = C_list[0]
#배열의 수 전부 합산, 학생 수 만큼 뺀 후 평균 구하기
C_sum = sum(C_list) - N
C_ave = C_sum/N
#print(C_ave,'_line 15_ C_ave')
#C_list에 들어간 수 중에 C_ave보다 큰 수가 발견되면 count ++
for i in range(len(C_list)):
if i != 0:
if C_list[i] > C_ave:
count+=1
#print(count,'_line 21_ count')
#C_p라는 상위 퍼센트를 담는 변수를 지정 후 f-string을 이용해 소숫점 조절
C_p = count/N*100
print(f"{C_p:.3f}%")
728x90
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
BaekJoon - 1237번: 정ㅋ벅ㅋ(1 차원 생각, PYTHON) (0) | 2022.10.06 |
---|---|
BaekJoon - 15596번: 정수 N개의 합(함수, PYTHON) (0) | 2022.09.05 |
BaekJoon - 8958번: OX퀴즈(1차원 배열, PYTHON) (0) | 2022.09.03 |
BaekJoon - 1546번: 평균(1차원 배열, PYTHON) (0) | 2022.09.03 |
BaekJoon - 3052번: 나머지(1차원 배열, PYTHON) (0) | 2022.09.03 |