-
[BOJ 18310, Python 3] 안테나알고리즘/BOJ 2021. 8. 3. 15:59반응형
https://www.acmicpc.net/problem/18310
풀이
y = | x - x1 | + | x - x2 | + | x - x3 | + .... + | x - xn | 로 그래프를 그려보면 대충 아래와 같은 모양이 나옵니다.
같은 거리의 집도 있으니 좀 찌그러진 2차함수 모양이겠네요.
여기서 n이 홀수이면 최소값이 딱 하나 나옵니다.
n이 짝수이면 최소값이 두 개 나옵니다.
그림은 y축이 살짝 다르지만 (n - 1)/2 값과 n / 2 값이 같다고 생각해주세요.
그래서 n이 홀수이면 n/2번째 집, n이 짝수이면 번호가 작은 것을 출력해야하므로 (n-1)/2로 출력해주면 됩니다.
이 방식을 사용하는 문제는 가끔가다 보여서 기억해두면 좋을 것 같습니다.
코드
1234n = int(input())arr = sorted([*map(int,input().split())])if n % 2: print(arr[n//2])else:print(arr[(n-1)//2])cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 1080, Python 3] 행렬 (0) 2021.08.04 [BOJ 19941, Python 3] 햄버거 분배 (0) 2021.08.04 [BOJ 11508, Python 3] 2+1 세일 (0) 2021.08.03 [BOJ 11501, C++, Python 3] 주식 (0) 2021.08.03 [BOJ 11399, Python 3] ATM (0) 2021.08.02