Love Every Moment

〔백준/파이썬〕4344번 평균은 넘겠지 본문

PROGRAMMING::LANGUAGE/Python

〔백준/파이썬〕4344번 평균은 넘겠지

해 송 2022. 6. 22. 21:34
반응형

 

출처

 

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 


 

문제

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

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

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


 

예제

# 입력
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
# 출력
40.000%
57.143%
33.333%
66.667%
55.556%

 


 

처음 틀렸던 풀이

import sys

# 총 케이스 개수
total = int(sys.stdin.readline())
for i in range(total) :
	# 각 케이스 입력(첫 번째 입력값: 해당 케이스의 학생 수)
	case = list(map(int, sys.stdin.readline().split()))
	avg = (sum(case) - case[0]) / case[0]
	# 평균을 넘는 학생 수
	cnt = 0
	for j in range(1, len(case)) :
		if case[j] > avg :
			cnt += 1
	print(cnt/case[0] * 100)
  • 소수점 셋째 자리까지 출력해야 하는데 40.0% 처럼 첫 번째까지만 출력되어서 틀렸다
  • 이를 해결하기 위해서 필요한 것이 f-string !
  • 더불어 case[1:] 과 같은 방법으로 첫 번째 요소를 제외할 수 있다는 것도 두 번째 풀이에서 적용

 

정답 풀이

import sys

# 총 케이스 개수
total = int(sys.stdin.readline())
for i in range(total) :
	# 각 케이스 입력(첫 번째 입력값: 해당 케이스의 학생 수)
	case = list(map(int, sys.stdin.readline().split()))
	avg = sum(case[1:]) / case[0]
	# 평균을 넘는 학생 수
	cnt = 0
	for j in case[1:] :
		if j > avg :
			cnt += 1
	print(f'{cnt/case[0] * 100:.3f}%')
  • sum(case[1:]) 처럼 쓰면 0번째 요소를 제외한 1번째부터의 합을 구할 수 있다
  • print(f'~~~{숫자}~~~') 의 형식으로 출력할 수 있다
  • 여기서 숫자 뒤에 :.자릿수f  를 쓰면 원하는 자릿수만큼의 소숫점을 출력할 수 있다
  • C언어에서 printf() 의 사용법과 매우 유사한 느낌이다

 


 

노트

  • 리스트에서 원하는 부분을 추출하여 사용하기 (ex: case[1:])
 

파이썬 리스트 콜론, [ : ] 슬라이싱 ( List Slicing )

리스트에서 원하는 부분을 추출(슬라이싱) 하기 파이썬 리스트(python list)에서 원하는 부분을 추출(슬라이싱) 하기 위해서는 인덱스의 숫자를 적어준다. 다음 예제를 보면, 콜론 : 앞과 뒤에 숫자

vision-ai.tistory.com

  • f-string 이용하여 특정 소숫점 자리까지 출력하기
 

파이썬 f-string 문자열 포맷팅_ 문자열 정렬, 소수점 자릿수 지정 (Python)

f-string format, %(서식 지정자)와 같은 문자열 포매팅 방법들 중 f-string이 가장 마지막에 업데이트되었다. 나의 경우, 파이썬 4개월 차여서 처음부터 f-string을 사용하다가 얼마 전에 format과 % 서식 지

ooyoung.tistory.com

 

반응형
Comments