๐ง ๋ฌธ์
1๋ถํฐ n๊น์ง์ ์๋ฅผ ํ ๋ฒ์ฉ๋ง ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง ์์ด์ด ์์ ๋, 1๋ถํฐ n๊น์ง ๊ฐ๊ฐ์ ์ ์์ ๋์ฌ ์๋ ์์ ๋ณด๋ค ํฐ ์๋ค์ ๊ฐ์๋ฅผ ์์ด๋ก ํํํ ๊ฒ์ Inversion Sequence๋ผ ํ๋ค.
์) 4 8 6 2 5 1 3 7
1์์ ๋์ธ 1๋ณด๋ค ํฐ ์๋ 4 8 6 2 5 ๐ 5๊ฐ
2์์ ๋์ธ 2๋ณด๋ค ํฐ ์๋ 4 8 6 ๐ 3๊ฐ
3์์ ๋์ธ 3๋ณด๋ค ํฐ ์๋ 4 8 6 5 ๐ 4๊ฐ
๋ฐ๋ผ์ 4 8 6 2 5 1 3 7์ inversion sequence๋ 5 3 4 0 2 1 1 0 ์ด ๋๋ค.
n๊ณผ 1๋ถํฐ n๊น์ง์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ง ์์ด์ inversion sequence๊ฐ ์ฃผ์ด์ก์ ๋, ์๋์ ์์ด์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๐ง ์ ๋ ฅ
8
5 3 4 0 2 1 1 0
๐ง ์ถ๋ ฅ
4 8 6 2 5 1 3 7
๐ง 1ํธ (๊ฐ์ ํ์ด)
๊ฐ์ฅ ํฐ ๊ฐ๋ถํฐ ์ฒ๋ฆฌํ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void){
freopen("input.txt", "rt", stdin);
int n, pos;
cin >> n;
vector<int> is(n+1), os(n+1);
for(int i = 1; i <= n; ++i){
cin >> is[i];
}
for(int i = n; i >=1; --i){
pos = i;
for(int j = 1; j <= is[i]; ++j){
os[pos] = os[pos+1];
pos++;
}
os[pos] = i;
}
for(int i = 1; i <= n; ++i){
cout << os[i] << ' ';
}
return 0;
}
'๐ง ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ C++] 40. ๊ต์งํฉ(ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ) (2) | 2024.05.02 |
---|---|
[์ธํ๋ฐ C++] 39. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 37. Least Recently Used (์นด์นด์ค ์บ์ ๋ฌธ์ ๋ณํ) (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 36. ์ฝ์ ์ ๋ ฌ (0) | 2024.05.02 |
[์ธํ๋ฐ C++] 35. Special Sort(๊ตฌ๊ธ ์ธํฐ๋ทฐ) (0) | 2024.05.02 |