https://www.acmicpc.net/problem/2661
๋ฌธ์
์ซ์ 1, 2, 3์ผ๋ก๋ง ์ด๋ฃจ์ด์ง๋ ์์ด์ด ์๋ค. ์์์ ๊ธธ์ด์ ์ธ์ ํ ๋ ๊ฐ์ ๋ถ๋ถ ์์ด์ด ๋์ผํ ๊ฒ์ด ์์ผ๋ฉด, ๊ทธ ์์ด์ ๋์ ์์ด์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋ ์ง ์์ ์์ด์ ์ข์ ์์ด์ด๋ค.
๋ค์์ ๋์ ์์ด์ ์์ด๋ค.
- 33
- 32121323
- 123123213
๋ค์์ ์ข์ ์์ด์ ์์ด๋ค.
- 2
- 32
- 32123
- 1232123
๊ธธ์ด๊ฐ N์ธ ์ข์ ์์ด๋ค์ N์๋ฆฌ์ ์ ์๋ก ๋ณด์ ๊ทธ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ๋ํ๋ด๋ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ์๋ฅผ ๋ค๋ฉด, 1213121๊ณผ 2123212๋ ๋ชจ๋ ์ข์ ์์ด์ด์ง๋ง ๊ทธ ์ค์์ ์์ ์๋ฅผ ๋ํ๋ด๋ ์์ด์ 1213121์ด๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ซ์ Nํ๋๋ก ์ด๋ฃจ์ด์ง๋ค. N์ 1 ์ด์ 80 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ 1, 2, 3์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ ๊ธธ์ด๊ฐ N์ธ ์ข์ ์์ด๋ค ์ค์์ ๊ฐ์ฅ ์์ ์๋ฅผ ๋ํ๋ด๋ ์์ด๋ง ์ถ๋ ฅํ๋ค. ์์ด์ ์ด๋ฃจ๋ 1, 2, 3๋ค ์ฌ์ด์๋ ๋น์นธ์ ๋์ง ์๋๋ค.
ํ์ด
๋ฐฑํธ๋ํน ๋ฌธ์ ๋ก ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ์ฌ 1์ด๋ 2๋ 3์ ์ถ๊ฐํ ๊ฒฝ์ฐ๋ค์ ๋ค ์ดํด๋ณด๋ฉด๋๋ค
์ด๋ ์ข์ ์์ด ํ๋จ ๊ธฐ์ค์ ๊ตฌํํ๋๊ฒ ๊ฝค ๊น๋ค๋ก์ ๋๋ฐ, dp๊ฐ๋ ์ ์ ์ฉํด๋ณด์.
์ด์ ์์ด์ด ์ข์ ์์ด์ด์๋ค๋ฉด ์ดํ ์์ด์ ์ถ๊ฐ๋ ์ซ์๋ถ๋ถ๋ง ์ ์ธํ๋ฉด ์ข์ ์์ด์ด๋ค. (์ด ๋ถ๋ถ์ ํ๋จํ ํ์ ์์)
๋งจ ๋ค ์ซ์๊ฐ ํฌํจ๋ ๋ถ๋ถ์์ด๋ง ๊ฒน์น๋๊ฒ ์๋์ง ํ๋จํ๋ฉด ๋๋ค.
๋ถ๋ถ์์ด์ substr์ ์ด์ฉํ์ฌ ๊ตฌํํ์๋ค.
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int n;
string ans;
bool isGood(string num, int cnt) {
for(int i=1; i<=cnt/2; i++) {
string s1 = num.substr(cnt-i, i);
string s2 = num.substr(cnt-i*2, i);
if(s1==s2)
return false;
}
return true;
}
void recur(string num, int cnt) {
// ์ด๋ฏธ ์๋ฃ๋์๊ฑฐ๋ ์ข์์์ด์ด ์๋๋ผ๋ฉด ํจ์ค
if(ans!="")
return;
if(!isGood(num, cnt))
return;
// ๊ฐฏ์ ๋ค ์ฑ์ ์ผ๋ฉด ๋ฐํ
if(cnt == n) {
ans = num;
return;
}
// ์ฌ๊ท (๋ฐฑํธ๋ํน)
for(int i=0; i<n; i++) {
recur(num+"1", cnt+1);
recur(num+"2", cnt+1);
recur(num+"3", cnt+1);
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
cin >> n;
recur("", 0);
cout << ans;
return 0;
}
/*
*/
'๐๏ธ ICPC Sinchon > Backtracking' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 14888๋ฒ: ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.07.06 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 15811๋ฒ: ๋ณต๋ฉด์ฐ?! (0) | 2023.01.22 |
[BOJ][C++] ๋ฐฑ์ค 2580๋ฒ: ์ค๋์ฟ (0) | 2023.01.22 |
[BOJ][C++] ๋ฐฑ์ค 23304๋ฒ: ์์นด๋ผ์นด (0) | 2023.01.21 |
[BOJ S2][C++] ๋ฐฑ์ค 10971๋ฒ: ์ธํ์ ์ํ 2 (0) | 2022.09.27 |