HyeLog
๋ฐฑ์ค_2529_๋ถ๋ฑํธ ๋ณธ๋ฌธ
๐๋ฌธ์ : https://www.acmicpc.net/problem/2529
2529๋ฒ: ๋ถ๋ฑํธ
๋ ์ข ๋ฅ์ ๋ถ๋ฑํธ ๊ธฐํธ ‘<’์ ‘>’๊ฐ k๊ฐ ๋์ด๋ ์์์ด A๊ฐ ์๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ถ๋ฑํธ ๊ธฐํธ ์๋ค์ ์๋ก ๋ค๋ฅธ ํ ์๋ฆฟ์ ์ซ์๋ฅผ ๋ฃ์ด์ ๋ชจ๋ ๋ถ๋ฑํธ ๊ด๊ณ๋ฅผ ๋ง์กฑ์ํค๋ ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, ์ ์
www.acmicpc.net
๐์๊ณ ๋ฆฌ์ฆ: ๋ธ๋ฃจํธํฌ์ค - ์์ด (๋ฐฑํธ๋ํน(์ฌ๊ท)์ผ๋ก ํ ์ ์์. → ์๋ ํฅ์ ๊ฐ๋ฅ)
๐์์ด๋์ด: ๋ถ๋ฑํธ์ ๋ฐ๋ฅธ ์ซ์๋ค์ ์์๋ง ์ ํด์ง๋ฉด, ์ค์ ๋ก ๊ฐ ์ซ์๋ค์ด ์ด๋ค ์ซ์์ธ์ง๋ ์๊ด ์์ด, ๊ทธ ์์์ ๋ง๊ฒ ๊ณ ๋ฅด๋ฉด ๋ถ๋ฑํธ๋ฅผ ๋ฌด์กฐ๊ฑด ๋ง์กฑํ๋ค. ๋ฐ๋ผ์, ์ต๋์์ ์ต์์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก, ๊ฐ๊ฐ 987··· / 123··· ๋ถํฐ ์์ํด์ ๋ถ๋ฑํธ์ ์์๋ฅผ ์ ํ๋ค.
๐์๊ฐ๋ณต์ก๋: (k+1)! * O(k)
๐์ด์ : ๋ถ๋ฑํธ์ ๋ฐ๋ฅธ ์์๋ฅผ ์ ํ๋ ๋ฐ์ (k+1)! ์์, ์์์ ๋ง๊ฒ permutation ํจ์๋ก ๋ค์ ์์ด์ ๊ณ ๋ฅด๋ ๋ฐ์ O(n) ์์.
๐STL: next_permutation(v.begin(), v.end()) ๊ณผ prev_permutation(v.begin(), v.end())
๐ํจ์์ ์๊ฐ๋ณต์ก๋๋ O(n)์ด๋ค. ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์.
https://velog.io/@polynomeer/%EC%88%9C%EC%97%B4Permutation
์์ด(Permutation)
์์ด์ ์์์ ์์ด์ ์๋ก ๋ค๋ฅธ ์์๋ก ์๋ ๊ฒ์ด๋ค. ์์ด์ ๋ธ๋ฃจํธ ํฌ์ค ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋๋ฐ ์์๊ฐ ๋งค์ฐ ์ค์ํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, 123๊ณผ 132๊ฐ ์๋ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ
velog.io
๐์ฝ๋:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N; // ๋ถ๋ฑํธ ๊ฐ์
char sign[9];
bool checkSign(vector<int> &perm) {
for (int i = 0; i < N; i++) {
if (sign[i] == '<') {
if (perm[i] > perm[i + 1]) return false;
}
if (sign[i] == '>') {
if (perm[i] < perm[i + 1]) return false;
}
}
return true;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> sign[i];
}
vector<int> small(N + 1);
vector<int> big(N + 1);
for (int i = 0; i <= N; i++) {
small[i] = i;
big[i] = 9 - i;
}
do {
if (checkSign(small)) {
break;
}
} while (next_permutation(small.begin(), small.end()));
do {
if (checkSign(big)) {
break;
}
} while (prev_permutation(big.begin(), big.end()));
for (int i = 0; i < N + 1; i++) {
cout << big[i];
}
cout << '\n';
for (int i = 0; i < N + 1; i++) {
cout << small[i];
}
cout << '\n';
return 0;
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค_14888_์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (๋ธ๋ฃจํธํฌ์ค-์์ด) (0) | 2022.05.10 |
---|---|
๋ฐฑ์ค_1339_๋จ์ด์ํ (0) | 2022.05.10 |
๋ฐฑ์ค_2580_์ค๋์ฟ (0) | 2022.05.04 |
๋ฐฑ์ค_9663_N-Queen (๋ฐฑํธ๋ํน) (0) | 2022.05.04 |
๋ฐฑ์ค_16198_์๋์ง ๋ชจ์ผ๊ธฐ (0) | 2022.05.01 |