티스토리 뷰

 

[Python] 백준 알고리즘 온라인 저지 4344번 : 평균은 넘겠지

 

Python3 코드

n = int(input())

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)
    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1  # 평균 이상인 학생 수
    rate = cnt/nums[0] *100
    print(f'{rate:.3f}%')

 

 

Python3 코드 풀이

 

1. 코드 작성에 대한 전체적인 내용 풀이

이번 문제는 학생의 수와 점수를 입력받으면 점수의 평균을 구해서 평균 이상 인 학생의 비율을 출력하는 문제이다. 학생수와 점수를 입력받을 때는 한 줄에 입력받는데 공백으로 구분되어 있고 첫 번째 수는 학생수, 두 번째부터는 점수를 입력받게 된다. 평균을 넘는 학생의 비율을 출력할 때는 소수점 이하 3자리까지 표기해야 한다. 

 

파이썬에는 평균을 구하는 함수가 없기 때문에 sum함수로 시험 점수의 합을 구하고서 학생수로 나누어서 평균을 구했다. 이후에 for문을 작성하여 if 조건식으로 평균점수보다 큰 수의 숫자를 구하고 학생수와 평균 이상 학생수의 비율을 출력 할 때는 f-string 표기법을 이용해서 소수점 자릿수를 지정하였다.

 

2. for문 상단, 점수의 평균을 구한다.

for _ in range(n):
    nums = list(map(int, input().split()))
    avg = sum(nums[1:])/nums[0]  # 평균을 구함 (nums[0]: 학생수, nums[1:] 점수)

테스트케이스 수로 입력받는 만큼 for문을 반복한다. for문 아래에서 학생수와 점수를 입력받으면 nums라는 변수에 리스트로 저장한다. 

 

리스트의 첫번째 원소는 학생수, 나머지는 점수이기 때문에 인덱스와 범위 연산자를 이용해서 학생수와 점수를 선택했다. 학생수는 nums [0]으로 표기, 점수는 nums [1:]로 표기하고서 평균을 구하기 위해서 sum함수로 점수의 합을 더하고서 학생수로 나누었다.

 

3. for문 중반부, 평균 이상인 학생 수를 구한다. 

    cnt = 0
    for score in nums[1:]:
        if score > avg:
            cnt += 1  # 평균 이상인 학생 수

for문으로 점수 각각을 score 변수에 선언하고 위에서 구한 평균값을 이용해서 평균보다 큰 점수인 경우 cnt 변수에 1씩 더해주었다.

 

4. 평균보다 높은 점수를 받은 학생 비율을 구하고 출력문을 작성한다.

    rate = cnt/nums[0] *100
    print(f'{rate:.3f}%')

출력문을 작성 할 때는 f-string 표기법으로 작성하였다. f-string은 문자열을 생성하는 따옴표 앞에 f를 붙여서 표현한다. f-string 표기법으로 문자열을 작성하면 { } 중괄호를 이용해서 변수를 삽입할 수 있다. 이때 문자열의 서식지 정자를 이용하면 소수점 자릿수를 지정할 수 있다. f-string에 대해서는 따로 포스팅을 해준 글이 있어서 첨부한다. ▶f-string 사용예시

 

반응형
댓글
반응형