백준 10431 c++

magicdrill·2024년 5월 20일

백준 문제풀이

목록 보기
350/673

백준 10431 c++

sort()함수를 사용하지 않는 사용자 지정 정렬방법이다. 삽입정렬과 비슷한거 같다...

line.front() = back;

지정된 범위를 한칸씩 뒤로 미룬 뒤의 벡터에서 지점된 범위 바로 앞에 가장 최신에 들어온 값을 넣어야 했는데, 실수로 벡터의 가장 앞에 넣어서 여러번 틀렸다.
시험 준비 때문에 실수가 늘어난다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void input_height(vector<vector<int>> &height)
{
	int P, i, j, T;

	cin >> P;
	height.resize(P, vector<int>(20, 0));
	for (i = 0; i < height.size(); i++)
	{
		cin >> T;//입력 받아도 쓸모 없음...?
		for (j = 0; j < height[i].size(); j++)
		{
			cin >> height[i][j];
		}
	}

	return;
}

int sort_function(vector<int> &height)
{
	//cout << "function() 수행?\n";
	vector<int>line;
	int count = 0;
	int i, j, k, back;

	line.push_back(height.front());
	for (i = 1; i < height.size(); i++)
	{
		line.push_back(height[i]);//새로운 키 추가
		for (j = 0; j < line.size() - 1; j++)//line의 처음부터 새로 들어온거 직전까지 비교
		{
			if (line[j] > line.back())//기존 값중 새로 들어온 수보다 큰 게 있는 경우
			{
				back = line.back();
				for (k = line.size() - 1; k > j; k--)
				{
					line[k] = line[k - 1];
					count++;
				}
				//line.front() = back;
				line[k] = back;
				break;
			}
		}
	}

	return count;
}

void find_answer(vector<vector<int>> &height)
{
	int i, ans;

	for (i = 0; i < height.size(); i++)
	{
		ans = sort_function(height[i]);
		cout << i + 1 << " " << ans << "\n";
	}

	return;
}

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

	vector<vector<int>> height;

	input_height(height);
	find_answer(height);

	return 0;
}

0개의 댓글