본문 바로가기

알고리즘/백준알고리즘

[백준 알고리즘/Python3] 4344, 평균은 넘겠지

Python3 코드

case_num=int(input())
sum=0
count=0
for i in range(case_num):
    student_num = list(map(int,input().split()))
    for j in range(1,student_num[0]+1):
        sum += student_num[j]
    avg = sum/student_num[0]


    for k in range(1, student_num[0]+1):
        if(avg < student_num[k]):
            count +=1


    print("{0:.3f}%".format((count/student_num[0])*100))
    sum, avg, count=0,0,0

 

내용 풀이

학생 수와 점수를 입력받아서 반에서 평균을 넘는 학생들의 비율을 구하는 문제이다.

처음에 반의 갯수를 입력받는다.
한 줄씩 입력하는데  첫번 째는 한 반의 학생수를 두 번재 부터는 학생들의 점수를 입력한다.

Python 코드 풀이

1. 반들의 갯수를 case_num에 넣는다.

case_num=int(input())
sum=0
count=0

sum, count를 0으로 초기화 시킨다.

 

 

2.  반들의 갯수만큼 for문을 반복

for _ in range(case_num):

 

3. 두 번째 줄 입력 부터는 list화 

student_num = list(map(int,input().split()))
    for i in range(1,student_num[0]+1):
        sum += student_num[i]
    avg = sum/student_num[0]

map()함수는 띄어쓰기 기준으로 입력받는 것을 int() 함수에 넣어서 int형태로 만든다음 list화 한다.

 

for문에 1부터 입력받은 학생수(student_num)+1 을 range함수에 넣는다.

range(a,b)는 a<= x < b 를 뜻한다.

 

각 학생 점수를 sum에 계속 더한다.

학생들의 총합 sum을 학생 수만큼 나눠준다. 그 값은 평균(avg)이다.

 

 

4. 학생의 성적과 평균값을 비교

    for k in range(1, student_num[0]+1):
        if(avg < student_num[k]):
            count +=1

평균값보다 크면 count를 1 증가시킨다.

 

 

5.총 학생수와 평균보다 큰 학생수의 비율

    print("{0:.3f}%".format((count/student_num[0])*100))
    sum, avg, count=0,0,0

문자열 중에 소숫점 3자리 까지만 나오도록 "{0:.3f}"를 하고 .format()함수를 이용해서 {0}에 값을 넣어준다. 

출력값에 %를 넣어야 하니깐 {}뒤에 %를 붙혀야 한다.

728x90