코딩공부/알고리즘

[파이썬 풀이] 백준 4344.평균은 넘겠지

잉옐잉 2021. 11. 23. 02:58

문제   

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

 

입력   

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

 

출력   

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 

코드   

N = int(input())
scores = [input().split() for _ in range (N)]



for i in range(N):
    average = 0
    n=int(scores[i][0])
    for j in range(1, n+1):
        average += int(scores[i][j])

        
    average = average / n

    count=0
    for j in range(1, n+1):
        if int(scores[i][j]) > average :
            count+=1
    print("{:.3f}".format(count/n*100, 3)+"%")

 

관련 개념 정리   

input

파이썬에서는 값을 사용자로부터 입력받을때 input함수를 사용합니다.

입력받은 값을 넣을 변수 이름 = input("띄울 메세지")

 

단! input함수는 입력받은 모든 내용을 문자열로 인식합니다. 따라서 입력받은 내용을 정수로 변환하려면

d = int(input())

와 같은 형태로 작성하거나,  나중에 변수를 사용할때

print(int(d)+2)

와 같이 int()로 감싸서 작성할 수 있습니다.

 

 

split

또한 값을 입력받을 때, 한 번에 여러 값을 입력받을 수 있습니다.
그때 사용할 수 있는 함수가 바로 split 함수입니다.

split할 변수 이름.split('구분자')

 

만약 split()일 경우, space, tap, enter와 같은 공백을 기준으로 문자열을 나눕니다.

 

 

for문

특정 코드들을 원하는 횟수 만큼 반복 시킬 때 사용하는것이 for문입니다.

for문의 기본 구조는 아래와 같습니다.

for i in 리스트(or 문자열, 튜플):
	실행할 코드

리스트,문자열,튜플의 첫 글자나 요소부터 마지막 글자나 요소까지 차례대로 변수에 대입됩니다.

 

for문의 범위와 변수값을 숫자로 정하고 싶을때는 아래와 같이 range함수를 사용합니다.

for i in range(시작숫자,종료숫자,step):
	실행할 코드

step은 얼만큼씩 변수를 증가 시킬지 정하는 것 입니다.

시작숫자와 step은 생략되어도 됩니다.

 

i를 사용하지 않고 코드를 반복만 하고 싶은 경우, i자리를 _(언더바)로 대체해서 사용합니다.

 

 

산술 연산자

x+y x 더하기 y
x-y x 빼기 y
x*y x 곱하기 y
x/y x 나누기 y
x//y x 나누기 y의 몫
x%y x 나누기 y의 나머지
x**y x의 y제곱

 

 

format함수

format함수는 문자열의 포맷을 지정하는 함수입니다.

코드에 사용된 포맷은 소수점을 표현하는 포맷입니다.

"{:0.2f}".format(2.33333)
#2.33

위와 같은 형태로 사용됩니다.

이때, "{:0.2f}"에서 . 뒤에 숫자인 2을 n으로 바꾼다면 소수점 n+1번째 자리에서 반올림하여 소수점 n번째 자리까지만 출력됩니다.

또한 . 앞에 숫자인 0을 n으로 바꾼다면 앞의 정수도 n번째 자리까지 출력이 됩니다.

"{:0.3f}".format(2.0776)
#2.078
"{:2.2f}".format(1222.33333)
#22.33