GitHubSeob
C++ / 백준 / 2696 / 중앙값 구하기 본문
문제
https://www.acmicpc.net/problem/2696
2696번: 중앙값 구하기
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주
www.acmicpc.net
문제풀이
multiset을 이용하여 풀었다.
입력받으면 multiset에 집어넣고 홀수번째 수를 입력받을 때마다 iterator을 이용하여 한 칸씩 중앙값을 가리킬 때까지 iterator를 증가시키고 해당 값을 answer에 push 한다.
모든 입력을 받았으면 answer의 크기와 answer의 모든 값들을 출력한다.
코드
#include <iostream>
#include <set>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int T(0), M(0);
int idx(0), idx2(0), num(0);
cin >> T;
while (T--) {
cin >> M;
multiset<int>ms;
multiset<int>::iterator iter;
vector<int>answer;
for (idx = 0; idx < M; ++idx) {
cin >> num;
ms.insert(num);
iter = ms.begin();
if (idx % 2 == 0) {
for (idx2 = 0; idx2 < ms.size() / 2; ++idx2) {
iter++;
}
answer.push_back(*iter);
}
}
cout << answer.size() << '\n';
for (idx = 0; idx < answer.size(); ++idx) {
cout << answer[idx] << ' ';
}
cout << '\n';
}
}
'Baekjoon > Gold' 카테고리의 다른 글
C++ / 백준 / 5430 / AC (0) | 2022.04.21 |
---|---|
C++ / 백준 / 21942 / 부품 대여장 (0) | 2022.04.12 |
C++ / 백준 / 21939 / 문제 추첨 시스템 Version 1 (0) | 2022.04.07 |
C++ / 백준 / 2075 / N번째 큰 수 (0) | 2022.03.30 |
C++ / 백준 / 7662 / 이중 우선순위 큐 (0) | 2022.03.30 |