카테고리 없음

4344 평균은 넘겠지

gebalza 2022. 12. 15. 21:50

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 

4344 평균은 넘겠지

문제 접근

사실 딱봤을 때 문제가 쉬워보여서 아무생각 없이 바로 접근했다. 그런데...

 

코드 작성

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 = []

위와같이 고쳐주었더니 해결되었다

 

오늘의 한마디

돌다리도 두들겨 보고 건너자

반응형