[알각코] 인프런 2-4 대표값

대표값

문제 정보는 인프런의 파이썬 알고리즘 문제풀이 코딩테스트에 있습니다!

문제풀이

import sys
n = int(in put())
a = list(map(int, input ().split())) 
# 점수 평균
ave = round(sum(a)) / n
min = 2147000000

for idx, x in enumerate(a):
  tmp = abs(x - ave)
  if (tmp < min):
    min = tmp
    score = x
    res = idx + 1
  elif (tmp == min):
    if (x > score):
      score = x
      res = idx + 1

추가

python의 round 함수는 round_half_even 방식을 따른다.

정확하게 소수점 중간일 때,

  • (ex: 1.500) 소수점 부분이 짝수쪽으로 간다해서 2가 되어 버리는 것을 말한다.
  • (ex: 2.500) 이면 2가 되어 버린다. 오잉또잉

그래서 round()함수를 사용하면 안된다.

a = a + 0.5
a = int(a)
print(a)

0.5를더하고 소수를 버리는 방법으로 한다.