처음 문제를 접했을 때는 이중 for문을 사용해 모든 값을 계산해서 ans_list를 만들어 모든 차이의 합을 계산 해 리스트에 추가했고 중 가장 작은 값의 인덱스를 활용해 값을 출력하는 방식으로 출력했다.
코드:
N = int(input())
list1 = list(map(int, input().split()))
list1.sort()
ans_list =[]
for x in list1:
add = 0
for y in list1:
add += abs(x-y)
ans_list.append(add)
m = min(ans_list)
print(list1[ans_list.index(m)])
결과:
해당 문제의 경우 결과 모든 값을 계산하는게 의미가 없다고 판단하여 중앙값을 기준으로 계산한 결과 항상 참이 나오는 결과를 얻을 수 있었다.
즉, 분산이 가장 고른 경우를 골라야하기 때문에 중앙값을 선택해야 한다.
이를 코드로 구현하면
N = int(input())
list1 = list(map(int, input().split()))
list1.sort()
if N %2 ==0:
print(list1[N//2 -1 ])
else:
print(list1[N//2])