From 27e37c9e133f1cb60d3756577447853272f98613 Mon Sep 17 00:00:00 2001 From: sh0723 Date: Thu, 25 Jun 2026 16:10:05 +0900 Subject: [PATCH] =?UTF-8?q?2529=20:=20=EB=B6=80=EB=93=B1=ED=98=B8=20v1=20s?= =?UTF-8?q?olve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/week3/BOJ2529/BOJ2529_V1.cpp | 84 ++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/week3/BOJ2529/BOJ2529_V1.cpp diff --git a/src/week3/BOJ2529/BOJ2529_V1.cpp b/src/week3/BOJ2529/BOJ2529_V1.cpp new file mode 100644 index 0000000..8bde137 --- /dev/null +++ b/src/week3/BOJ2529/BOJ2529_V1.cpp @@ -0,0 +1,84 @@ +#include +using namespace std; +int num_arr[10] = {0,1,2,3,4,5,6,7,8,9}, used[10]; +int k; +vector sign; +vector ret; +vector max_ret; +vector min_ret; +bool calculate(int level, int first, int second) { + if (sign[level] == '<') + return first < second; + else + return first > second; +} +void dfs(int level) { + if (level == k+1) { + for (int i=0; i<=k; i++) { + if (ret[i] == max_ret[i]) + continue; + else { + if (ret[i] > max_ret[i]) { + max_ret = ret; + } + break; + } + } + + for (int i=0; i<=k; i++) { + if (ret[i] == min_ret[i]) + continue; + else { + if (ret[i] < min_ret[i]) { + min_ret = ret; + } + break; + } + } + + return; + } + + for (int i=0; i<10; i++) { + if (used[i] == 1) continue; + if (level != 0 && !calculate(level-1, ret[level-1], i)) continue; + else { + ret.push_back(i); + used[i] = 1; + dfs(level+1); + used[i] = 0; + ret.pop_back(); + } + } +} +int main() { + + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + + cin >> k; + max_ret.resize(k+1); + min_ret.resize(k+1); + fill(max_ret.begin(), max_ret.end(), 0); + fill(min_ret.begin(), min_ret.end(), 9); + + for (int i=0; i> s; + sign.push_back(s); + } + + dfs(0); + + for (int i=0; i<=k; i++) { + cout << max_ret[i]; + } + cout << '\n'; + for (int i=0; i<=k; i++) { + cout << min_ret[i]; + } + cout << '\n'; + + return 0; +} \ No newline at end of file