백준 1546번: 평균

2023. 8. 25. 22:26개인활동/코테

주어진 점수에서 최대값을 이용해 점수를 조작하여 평균을 다시 구하는 문제이다.

n = int(input())
s = list(map(int, input().split()))
s_max = max(s)
new_s = []
while s:
    i, *s = s
    new_s.append(i/s_max*100)

print(sum(new_s)/n)

기존의 데이터를 삭제하지 않는 방향이 가장 좋은 우리로서는 새로운 리스트를 만들어서 변형한 데이터를 넣어주는 것이 가장 좋다.

 

코드가 좀 길긴 했지만 2트만에 통과

 

숏코드도 한번 보고 넘어가자.

n,*l=map(int,open(0).read().split())
print(sum(l)*100/max(l)/n)

나도 첫줄처럼 input을 받고 싶지만.. 이상하게도 pycharm에서 open(0)을 사용하면 input 받는 것이 끝나지 않아서 저런 코드로 테스트를 시도하려면 할 수가 없다

 

왜 그러는 걸까?

 

여튼. 출력문의 내용은 계산을 한번에 다 때려 넣어버린 것인데, 실제로 저렇게 계산하면 어떻게 될지 곰곰히 생각을 해보았다. 

수학적으로 수식을 작성해보면 max값과 *100은 공통적으로 가지고있기에 이를 이용해 분배되어있는 l의 요소들을 다 합쳐주면 결국 sum(l)이 나오게 된다.

 

간단한 수식.

수학을 잘해야 하는 이유인 듯 하다.

'개인활동 > 코테' 카테고리의 다른 글

백준 2743번: 단어 길이 재기  (0) 2023.08.27
백준 27866번: 문자와 문자열  (0) 2023.08.27
백준 10811번: 바구니 뒤집기  (1) 2023.08.24
백준 3052번: 나머지  (0) 2023.08.23
백준 5597번: 과제 안 내신 분..?  (0) 2023.08.23