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;
}