백준 2548번 파이썬

정재혁·2022년 7월 17일
0

백준 2548번 대표 자연수

문제


입력 및 출력 값


풀이:

처음 문제를 접했을 때는 이중 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])

결과

업로드중..

profile
저는 정재혁임니다^___^

0개의 댓글