백준 4344: 평균은 되겠지? :파이썬

태훈입니다·2022년 11월 30일
0

코테 풀이

목록 보기
19/34

정답 코드:


C = int(input())
for i in range(C):
    a = list(map(int,input().split()))
    b = (sum(a[1:]))/(a[0]) 
    c = 0
    # b = a과목의 평균.
    for j in a[1:]:
        if j > b:
            c += 1
    rate = c/a[0] * 100
    print(f'{rate:.3f}%')

코드 풀이:

우선 C를 전달 받고,
C범위만큼 반복문을 설정한다.
a에는 list형태로 예제처럼 과목수/ 점수들을 받고
이 a 리스트의 평균을 구하는 b를 만든다.
이 때 b = a의 1번째 인덱스부터 끝까지의 합을(0번째 인덱스는 과목 수니까 점수에 포함X)
a의 0번째 인덱스로 나누면 평균 점수가 된다.
그리고 c 에 초기값 0을 설정한 후,
2중 for 문을 통해 j를 각 과목 점수들로 불러오는데, (이 때도 1번 인덱스부터 시작)
만약 j가 평균보다 클 경우 c의 값을 1 증가시켜서,
평균보다 큰 j들의 수를 과목수인 a[0]으로 나눈 값은 0.x 가 된다.
이때 문제에서 주어진 답을 도출하기 위해선 100을 곱해서 2자리 정수로 만들어 준 뒤
f'{rate:.3f}%' 로 출력하면 rate값을 소숫점 3번째까지 출력이 되기에
답이 나온다!

거의 1시간을 헤맨 문제인 만큼.. 해설도 지저분하다.

이 문제를 마지막으로 1차열 배열 코테는 끝났고,
다음 코테를 하면서는 좀 더 깊게 공부해서 설명도 잘 해봐야겠다..
profile
개발 공부를 하고 있는 비전공자입니다!

0개의 댓글