320x100
백준 알고리즘 단계별로 풀어보기의 1차원 배열,
아홉번째, <평균은 넘겠지> 문제입니다.
먼저 문제를 한번 읽어보겠습니다.
문제 제시
출력 부분에서 소수점 셋째 자리까지 출력해야 하는 것을 확인하실 수 있습니다.
이쯤에서 format, 혹은 F-스트링을 써야 한다는 생각이 들었으면 합니다.
f'{p:.3f}%'
입력 예시도 보겠습니다.
정답 공개
C = int(input())
B=[]
for _ in range(C):
A = list(map(int, input().split()))
av = sum(A[1:])/ A[0] # 평균
c = 0
for i in A[1:]:
if i > av:
c = c+1
p = (c / A[0])*100 # 퍼센트에이지 계산
print(f'{p:.3f}%') # 소숫점 형태로 변환함 (F-스트링 사용)
설명
먼저, 입력받는 수와 1차원 배열 문제이기 때문에 C와 빈 리스트를
받아주는 것은 당연하겠죠.
C = int(input())
B=[]
그리고 나서 for문을 쓰는데, 특별히 반복되는 변수 자리를 안정하고 싶을때는
for 다음에 '_' (언더바)를 사용합니다. 이는 해당 자리를 무시한다는 뜻입니다.
for _ in range(C):
이 문제에 특징적인 부분은 "학생의 수" 다음에 "학생들의 점수"가 띄어쓰기 다음
바로 나온다는 것입니다.
예시
3명의 학생이 70점, 90점, 80점을 받았을 때의 입력입니다.
3 70 90 80
그렇기 때문에 두번째 줄을 리스트로 받더라도, 가장 앞의 값과 그 이후의 값을 구분해야 합니다.
for _ in range(C):
A = list(map(int, input().split())
A[1:] # 여기서부터 코드 제작
리스트 슬라이싱을 사용합니다.
점수의 평균을 구해야 하기 때문이죠.
for _ in range(C):
A = list(map(int, input().split())
av = sum(A[1:])/len(A[0]) # A[0]에 인원수가 선언됨
평균 이상의 점수를 받은 아이들의 인원을 넣어줄 c를 선언하고,
for문을 넣어줍니다.
C = int(input())
B=[]
for _ in range(C):
A = list(map(int, input().split()))
av = sum(A[1:])/ A[0] # 평균
c = 0
for i in A[1:]:
if i > av:
c = c+1
이처럼 평균점수 이상의 학생이 쌓일때마다 c가 1씩 상승합니다.
평균 이상을 받은 인원 / 전체 인원을 받아줄 p를 선언합니다.
C = int(input())
B=[]
for _ in range(C):
A = list(map(int, input().split()))
av = sum(A[1:])/ A[0] # 평균
c = 0
for i in A[1:]:
if i > av:
c = c+1
p = (c / A[0])*100
처음에 제시했던 f스트링을 사용해서 % 기호와 소수점 셋째 자리까지
표현하도록 합니다.
C = int(input())
B=[]
for _ in range(C):
A = list(map(int, input().split()))
av = sum(A[1:])/ A[0] # 평균
c = 0
for i in A[1:]:
if i > av:
c = c+1
p = (c / A[0])*100 # 퍼센트에이지 계산
print(f'{p:.3f}%')
완성
728x90
'알고리즘 예시 > 백준' 카테고리의 다른 글
[Baekjoon] 백준 #2292번 파이썬 해답 (0) | 2023.01.13 |
---|---|
[Baekjoon] 백준 #1316번 파이썬 해답 (0) | 2023.01.11 |
[Baekjoon] 백준 #10871번 파이썬 해답 (0) | 2023.01.05 |
[Baekjoon] 백준 #1110번 파이썬 해답 (애국자 ver) (0) | 2023.01.04 |
[Baekjoon] 백준 #11022번 파이썬 해답 (0) | 2023.01.03 |