Coding Test/BaekJoon_Python

BaekJoon - 4344번: 평균은 넘겠지(1차원 배열, PYTHON)

  • -
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}%")

1차원 배열 챕터 클리어!

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.