[백준/BOJ] 백준 2696번 : 중앙값 구하기

2020. 9. 23. 02:46알고리즘 문제풀이

www.acmicpc.net/problem/2696

 

2696번: 중앙값 구하기

첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1<=M<=9999, M=홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주어진다. 원소

www.acmicpc.net

수를 입력받을 때마다 홀수 번째 수를 입력받을 때는 지금까지 입력받은 수들을 정렬하여 중앙값을 구하고 그 중앙값을 mid에 저장한다.

 

코드

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

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int tc;
	int m;
	int input;
	vector<int> mid;
	vector<int> input_list;

	cin >> tc;

	for (int t = 0; t < tc; t++)
	{
		mid.clear();
		input_list.clear();

		cin >> m;
		for (int i = 1; i <= m; i++)
		{
			cin >> input;
			input_list.push_back(input);

			if (i % 2 != 0) //홀수번째 수일때
			{
				sort(input_list.begin(), input_list.end()); //정렬
				mid.push_back(input_list[input_list.size() / 2]); //중앙값을 mid에 저장한다
			}
		}

		cout << mid.size() << "\n";

		int cnt = 0;
		for (int i = 0; i < mid.size(); i++)
		{
			//한줄에 10개씩 출력한다
			if (cnt == 10)
			{
				cout << "\n";
				cnt = 0;
			}

			cout << mid[i] << " ";
			cnt++;
		}

		cout << "\n";
	}

	return 0;
}