반응형

18310

https://www.acmicpc.net/problem/18310

 

18310번: 안테나

첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다.

www.acmicpc.net

[정답]

1
2
3
4
5
import sys
= int(sys.stdin.readline())
= list(map(int, sys.stdin.readline().split()))
a.sort()
print(a[(N-1)//2])
cs

.

.

.

[풀이]

중앙값을 구하는 문제이다. 중앙값 중에서도 최솟값을 구해야 하기 때문에 (N-1)//2를 해준다

 

처음에는 중앙값이 답인줄 모르고 모든 안테나 에서의 거리 중 최소를 구하는 완전탐색을 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
= int(sys.stdin.readline())
= list(map(int, sys.stdin.readline().split()))
a.sort()
for n in range(N-1-1-1):
    total = 0
    total += a[n]*- sum(a[:n]) 
    total += sum(a[n:]) - a[n]*(N-1-n)
    if n == N-1:
        t_result = total
    t_result = min(t_result, total)
    if t_result == total:
        result = a[n]
print(result)
#오답
cs

그 결과 시간초과가 떴다.

고민하면서 풀며 설마... 했는데

답이 중앙값이라 어이가 없었다.

반응형

+ Recent posts