문제
대학생 새내기들의 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
'코딩공부 > 알고리즘' 카테고리의 다른 글
[파이썬 풀이] 백준 4673.셀프 넘버 (2) | 2021.11.26 |
---|---|
[파이썬 풀이] 백준 15596.정수 N개의 합 (0) | 2021.11.26 |
[파이썬 풀이] 백준 8958.OX퀴즈 (0) | 2021.11.23 |
[파이썬 풀이] 백준 1546.평균 (0) | 2021.11.23 |
[파이썬 풀이] 백준 3052.나머지 (0) | 2021.11.23 |