안경잡이 구루루

백준 4344 ( 평균은 넘겠지 ) [ Python ] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 4344 ( 평균은 넘겠지 ) [ Python ]

구루루(gururu) 2020. 6. 25. 15:45
반응형

 

 


나:

C = int(input())

for i in range(C):
    score = list(map(int, input().split()))
    cnt =0
    if score[0] == len(score)-1:
        aver = (sum(score)-score[0]) / score[0]
    
    for j in range(1,len(score)):
        if aver < score[j]:
            cnt +=1
    print('%0.3f%%'%((cnt/score[0])*100))

완성된 코드는 위와 같다.

 

C = int(input())

for i in range(C):
    score = list(map(int, input().split()))
    cnt =0
    if score[0] == len(score)-1:
        aver = (sum(score)-score[0]) / score[0]

우선 반복할 횟수인 테스트케이스 C를 입력받는다. 

C 만큼 for 반복문을 사용한다. 각 케이스 마다 학생수와 학생의 점수를 받는데 이 모두를 score라는 list에 다 받는다.

cnt는 나중에 각 테스트케이스에서의 평균을 넘는 학생의 수를 나타낸다.

이때 score[0]의 학생수의 값과 입력받은 학생 점수들의 개수가 같으면 aver(평균값)을 계산해서 진행시킨다.

 

    for j in range(1,len(score)):
        if aver < score[j]:
            cnt +=1
    print('%0.3f%%'%((cnt/score[0])*100))

반복문속 반복문으로 평균값 점수 보다 더 큰 점수의 학생수가 몇명인지 판별하는 부분이다.

즉 score[1] 부터 학생 총수의 점수값과 앞에서 구한 aver와 비교를 통해 더 큰 점수인 학생들의 수를 cnt에 더해나간다.

이후 평균을 넘는 학생수의 비율을 나타내기 위해 소수 셋째 짜리까지 나타내고( '%0.3f'), %자리에 그 비율을 치환했다.

이때 출력값 뒤에 %를 표현하기 위해 %를 두번 사용해 치환되지 않고 그대로 사용되도록 했다. 


다른사람:

https://jeongmin-lee.tistory.com/45

C = int(input())
for i in range(C):
    N = list(map(int, input().split(' ')))
    avg = sum(N[1:]) / N[0]
    cnt = 0
    for j in N[1:]:
        if j > avg : 
            cnt += 1
            
    print(str("%.3f" %round((cnt/N[0])*100, 3))+"%")

완성된 코드는 다음과 같다.

여기서 알아볼 건 round 함수에 대해서만 보면 될거 같다.

+) 

round( 소수 , 나타낼 소수점 자리수 )  -  소수가 나타낼 소수점까지 반올림 되서 표현됨

ex) round(3.14575, 3)  -> 3.146

반응형