<제출 코드> - 시간 초과
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)
'[백준] > python' 카테고리의 다른 글
[백준] 블랙 프라이데이(18114) - python (0) | 2025.01.09 |
---|---|
[백준] ATM(11399) - python (2) | 2025.01.08 |
[백준] 큐(10845) - python (1) | 2025.01.06 |
[백준] 중앙 이동 알고리즘(2903) - python (0) | 2024.05.17 |
[백준] 프린터 큐(1966) - python (0) | 2023.02.23 |