가자미의 개발이야기

[알고리즘] 대표값 구하기 본문

Computer Science/알고리즘

[알고리즘] 대표값 구하기

가자미 2021. 5. 16. 12:56

#문제:

▣ 입력설명 첫줄에 자연수 N(5<=N<=100)이 주어지고, 두 번째 줄에는 각 학생의 수학점수인 N개의 자연 수가 주어집니다. 학생의 번호는 앞에서부터 1로 시작해서 N까지이다.

 

▣ 출력설명 첫줄에 평균과 평균에 가장 가까운 학생의 번호를 출력한다. 평균은 소수 첫째 자리에서 반올림합니다.

 

▣ 입력예제 1

10

45 73 66 87 92 67 75 79 75 80

 

▣ 출력예제 1

74 7

 

예제설명) 평균이 74점으로 평균과 가장 가까운 점수는 73(2번), 75(7번), 75(9번)입니다. 여기서 점수가 높은 75(7번), 75(9번)이 답이 될 수 있고, 75점이 두명이므로 학생번호가 빠른 7번이 답이 됩니다.

 

import sys
#sys.stdin=open("input.txt", "rt")

N=int(input())
lst=list(map(int,input().split()))
lst2=[]
sum=0

for i in lst:
    sum=sum+i
sum=int(round(sum/N,0))

for i in range(0,N):
    if lst[i]-sum>0:
        tmpt=lst[i]-sum
    else:
        tmpt=sum-lst[i]
    lst2.append(tmpt)

min=0

for i in range(0,N):    
    if lst2[min]>lst2[i]:
        min=i
    elif lst2[min]==lst2[i]:
        if lst[min]>=lst[i]: min=min
        elif lst[min]<lst[i]: min=i
    else:
        continue
    
print("{} {}".format(sum, min+1))

#몰랐거나 검색했던 내용들

1. 파이썬에서 소수 여부 판별하기

if a%1==0 이 true이면 소수가 아님.

 

2. 반올림하기

round(2.5, 1) 이럴 경우 2.5를 소수점 첫번째 자리에서 반올림 진행.