백준 알고리즘 문제 풀이 [Python]

[백준/Python] 4344번 평균은 넘겠지 (1차원 배열)

wlalsu_u 2023. 2. 22. 22:33

4344번 : 평균은 넘겠지 문제

 

 

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다.

당신은 그들에게 슬픈 진실을 알려줘야 한다.😥

 

 

 

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

 

 


 

풀이 코드

 

c = int(input())

for _ in range(c):
    array = list(map(int, input().split()))
    s = sum(array[1:])
    average = s/array[0]

    count = 0
    for j in array[1:]:
        if j > average:
            count += 1

    print(f'{count/array[0] * 100:.3f}%')

 

 

 

c = int(input())

 

 

- 첫째 줄에서 테스트 케이스의 개수 c 을 입력받음

 

- input() 은 한 줄의 문자열만 입력받을 수 있음

 

- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용

 

 

 

for _ in range(c):

 

 

- 입력받은 테스트 케이스의 개수만큼 for 문을 반복

 

- _ (언더바)를 사용하여 반복을 수행하되, 반복을 위한 변수의 값을 무시

 

 

 

array = list(map(int, input().split()))

 

 

- 공백으로 구분되는 여러개의 데이터를 입력받기 위한 방법

 

- input().split() 으로 문자열을 공백으로 나눈 리스트로 바꿈

 

- map 을 이용하여 리스트의 모든 원소에 int() 함수를 적용

 

- 그 결과를 다시 list() 로 전환하여, 입력받은 문자열을 각각 숫자 자료형으로 저장

 

 

 

s = sum(array[1:])

 

 

- sum() 함수는 리스트와 같은 iterable 객체가 주어졌을 때, 모든 원소의 합 반환

 

- 2번째 수부터 N명의 점수가 주어지므로, array([1:]) 로 1번 인덱스부터 반환

 

 

 

average = s/array[0]

 

 

- 평균을 구하는 수식

 

- 앞서 sum 함수로 구한 s 의 값을, 학생의 수인 array[0] 으로 나누어 average 에 저장

 

 

 

count = 0

 

 

- 평균이 넘는 학생 수를 세기 위한 변수

 

- 0으로 초기화

 

 

 

 

for j in array [1:]:

 

 

- array[1:] 를 이용하여 인덱스 1번 원소부터 순차 반복

( 인덱스 0번 원소는 학생 수를 나타내는 N 이므로 제외)

 

- 'for 변수 in 리스트' 형태로, 리스트에 포함되어 있는 원소를 하나씩 방문

 

- in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 등이 사용 가능

 

 

 

 

if j > average:  count += 1

 

 

- array 리스트의 인덱스 1번부터 순차 탐색한 점수가 평균보다 높은 경우

 

- count 값을 1 증가

 

 

 

print(f'{count/array[0] * 100:.3f}%')

 

 

- count(평균 이상 학생 수)/array[0](총 학생 수) * 100 으로, 평균이 넘는 학생들의 비율을 구함

 

- f-string 에서 .3f 를 이용하여 소수점 셋째 자리까지 출력

 

 

 

[f-string]

- Python 3.6 이상의 버전부터 사용 가능
- 문자열 앞에 'f' 접두사를 붙여 사용
- 단순히 {}(중괄호) 안에 변수를 넣어, 자료형의 변환 없이 간단히 문자열과 정수를 함께 사용 가능

예시) print(f"정답은 {answer} 입니다")

 

 

 

 

 

 

 

 

나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC