[백준/BOJ] 18310. 안테나 [Silver 3]
- 안테나
문제출처 : https://www.acmicpc.net/problem/18310
code
#include <stdio.h> #include <stdlib.h> void QuickSort(int arr[], int start, int end) { if (start >= end) return; int piv = start, left = start + 1, right = end, temp; while (left <= right) { while (left <= end && arr[left] <= arr[piv]) left++; while (right > start && arr[right] >= arr[piv]) right--; if (left > right) { temp = arr[right]; arr[right] = arr[piv]; arr[piv] = temp; } else { temp = arr[right]; arr[right] = arr[left]; arr[left] = temp; } } QuickSort(arr, start, right - 1); QuickSort(arr, right + 1, end); } int main() { int N, i; int* ant; scanf("%d", &N); ant = (int*)malloc(N * sizeof(int)); for (i = 0; i < N; i++) scanf("%d", &ant[i]); QuickSort(ant, 0, N - 1); printf("%d", ant[(N-1)/2]); free(ant); return 0; }
중간값에 가장 근접한 집이 정답인것같은 느낌은 들었지만, 어떻게 풀어야할지 몰라서 평균이랑 중간값구한다음 가장 가까운값을 출력하려고했는데, 코드에서 막히더라...
어떻게 풀지 한참고민하다가 어차피 중간값을 찾을거면, 정렬해서 중간인덱스를 출력하면 되는거아닌가? 해서 입력했더니 통과됐다...(N-1)/2 인이유는 0~N-1까지 인덱스가 있기 때문이다. N이 짝수이면 중간값이 2개가 나오는데 어차피 거리는 똑같기때문에 아무거나 찍어주면된다.
Author And Source
이 문제에 관하여([백준/BOJ] 18310. 안테나 [Silver 3]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jychan99/백준BOJ-18310.-안테나-Silver-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)