카테고리 없음
4344 평균은 넘겠지
gebalza
2022. 12. 15. 21:50
https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
문제 접근
사실 딱봤을 때 문제가 쉬워보여서 아무생각 없이 바로 접근했다. 그런데...
코드 작성
a = int(input()) //몇개 받을지 입력 받고
avr = 0
result = 0
anwser = 0
for i in range(a):
inp = list(map(int, input().split())) //받은 값 리스트로 만들어 주고
avr = (sum(inp)-inp[0])/inp[0] //평균 구하고
for l in range(inp[0]): //평균보다 큰 값 구하기 위해 for문 돌리고
if(avr<inp[l+1]): //큰값 구해서
result +=1 //크면 1더해주고
anwser = (result/inp[0])*100 //확률 구해줘서
print(f"{round(anwser,3)}%") //소수점 3째자리에서 반올림...
avr = 0 //초기화
result = 0
anwser = 0
inp = []
문제발생
당연히 무난하게 통과하는 줄 알았으나 오류가 발생했다
값들이 전부 같을 때 (ex 5 0 0 0 0 0) 이런 식의 입력이 들어올 때 소수점 3째짜리인 0.000%가 아니라 0.0%가 출력 되는 것이였다...
문제해결
따라서 위 코드를
a = int(input())
avr = 0
result = 0
anwser = 0
for i in range(a):
inp = list(map(int, input().split()))
avr = (sum(inp)-inp[0])/inp[0]
for l in range(inp[0]):
if(avr<inp[l+1]):
result +=1
anwser = (result/inp[0])*100
p = '{0:0.3f}%'.format(anwser) //포멧으로 고정
print(p)
avr = 0
result = 0
anwser = 0
inp = []
위와같이 고쳐주었더니 해결되었다
오늘의 한마디
돌다리도 두들겨 보고 건너자
반응형