[백준]/python
[백준] 대표 자연수(2548) - python
0_TLS
2025. 1. 7. 20:42
<제출 코드> - 시간 초과
import sys
input = sys.stdin.readline
n = int(input())
num = map(int, input().split())
total = 0
tmp = []
num = list(num)
answer = []
for i in range(n):
for j in range(n):
total += abs(num[i] - num[j])
tmp.append(total)
total = 0
for i in range(len(tmp)):
if tmp[i] == min(tmp):
answer.append(num[i])
print(min(answer))
이렇게 풀면 바보

모든 값을 계산할 필요가 없음.
차이를 최소로 하려면 중앙값을 골라야한다!
<수정한 코드>
import sys
input = sys.stdin.readline
n = int(input())
num = list(map(int, input().split()))
num.sort()
if n%2 == 0:
print(num[n//2 -1])
else:
print(num[n//2])
=> num[(n-1)//2] 이렇게 풀어도 됨.
이렇게 하면 짝수인경우 자동으로 더 작은 값을 고른다
import sys
input = sys.stdin.read
data = input().split()
N = int(data[0]) # 숫자의 개수
numbers = list(map(int, data[1:]))
numbers.sort()
# 중앙값 찾기
# N이 짝수일 경우, 두 중앙값 중 작은 값 사용 (정렬 기준으로 자동으로 작은 값 선택)
median = numbers[(N - 1) // 2]
# 결과 출력
print(median)