Search
Duplicate
📗

호반우 상인의 이상한 품질 계산법

주차
문제번호
20117
언어
C++
티어
실버
유형
그리디
정렬
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

모든 호반우를 한번에 묶는다고 가정했을때, 중앙값을 구하게 되면 중앙값보다 좋은 품질의 호반우는 절대 중앙값으로 정해질 수 없음. 모든 호반우를 묶었을때의 중앙값보다 큰 품질들을 중앙값으로 만들게 2개씩 묶어주면 됨
짝수일때, 전체 묶음의 중앙값을 찾고 그 녀석과 그것보다 작은 하나, 그리고 중앙값보다 품질들과 나머지 호반우들을 2개당 1묶음으로 묶으면 됨
홀수일때, 전페 묶음의 중앙값을 찾고 그 녀석을 혼자 묶고, 나머지는 중앙값보다 (큰 녀석, 작은 녀석) 이렇게 2개당 1묶음으로 묶으면 됨

놓쳤던 부분

코드

2416 KB

12 ms

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { int n; vector<int> ho; int answer = 0; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; ho.resize(n); for (int i = 0; i < n; i++) cin >> ho[i]; sort(ho.begin(), ho.end()); if (n % 2 == 0) { answer = ho[n / 2] * 2; for (int i = n / 2 + 1; i < n; i++) answer += ho[i] * 2; } else { answer = ho[(n + 1) / 2 - 1]; for (int i = (n + 1) / 2; i < n; i++) answer += ho[i] * 2; } cout << answer; return (0); }
C++
복사