본문 바로가기

개발/백준

[백준] 18310번. 안테나 (C++)

문제 설명

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

 

18310번: 안테나

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

www.acmicpc.net

 

해결 방법

가운데에 있는 집에 안테나를 설치할 경우 가장 효율적이다

N이 홀수일 경우 N/2번째 집에 설치

N이 짝수일 경우 N/2-1 번째 집에 설치

+ "단, 안테나를 설치할 수 있는 위치 값으로 여러 개의 값이 도출될 경우 가장 작은 값을 출력한다."

라는 조건을 만족하기 위해서 N이 짝수일 경우 -1을 해주는 것이다.

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main() 
{
	int N; cin >> N;
	vector <int> houses(N);

	for (int i = 0; i < N; i++){	cin >> houses[i];   }
	sort(houses.begin(), houses.end());

	int result = N % 2 == 0 ? N / 2 - 1 : N / 2;
	cout << houses[result];
}