๐ค๋ฌธ์ ์ดํด
๋ค์ ๊ฐ์ด ํ์ฌ ๊ฐ์ 3์ผ๋ก ๋๋ ๊ฐ์ด๊ฑฐ๋ 2๋ฅผ ๊ณฑํ ๊ฐ์ผ๋ก ๋์ด๋์ด ์๋ ์์ด์ ๋ค์์ด ๋์ ๊ฒ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๊ณ , ๋ค์๊ธฐ ์ ์ ํํ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค!
๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
์ฃผ์ด์ง ์์ 1์์๋ N์ด 6์ด๊ณ ์์ด B๋ 4 8 6 3 12 9์๋ค. ๊ฐ ์ซ์๋ณ๋ก ์ด์ ์ ์ฌ ์ ์๋ ๊ฐ(*2ํ๊ธฐ ์ , /3ํ๊ธฐ ์ ๊ฐ)๊ณผ ๋ค์์ ์ฌ ์ ์๋ ๊ฐ(*2ํ ํ, /3ํ ํ)์ ์ ์ด๋ณด์๋ค. ์ด์ ๊ณผ ์ดํ์ ์ฌ ์ ์๋ ๊ฐ์ด ๋ช ํํด ๋ณด์ฌ์ ํด๋น ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ๊ตฌํํด๋ดค๋ค.
ํด๋น ๋ฌธ์ ์ ์ ๋ต์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ ์ ๋ค๋ก ๋ฃ๊ณ ๋บ ์ ์๋ list๋ฅผ ์ฌ์ฉํ์๋ค.
list๋ฅผ ์ฑ์๋ฃ๊ธฐ ์ํด ์ ๋ ฅ ๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด์ 0๋ถํฐ n-1๊น์ง for๋ฌธ์ผ๋ก ๋๋ค.
list๊ฐ ๋น์ด ์๋ ๊ฒฝ์ฐ ์ด์ ์ ์ฌ ์ ์๋ ๊ฐ๊ณผ ๋ค์์ ์ฌ ์ ์๋ ๊ฐ์ด ํด๋น ๋ฐฐ์ด์ ์กด์ฌํ๋ฉด ์์์ ๋ง๊ฒ list์ ๋ฃ์ด์ฃผ๊ณ ,
list๊ฐ ๋น์ด ์์ง ์๋ ๊ฒฝ์ฐ v[i]์ ์ด์ ์ ์ฌ ์ ์๋ ๊ฐ๊ณผ ๋ค์์ ์ฌ ์ ์๋ ๊ฐ์ด ํด๋น ๋ฐฐ์ด์ ์กด์ฌํ๋๋ผ๋ list์ ๋งจ ์๊ณผ ๋์ ๋ฃ์ ์ ์์ผ๋ฉด pass, ๋ฃ์ ์ ์์ผ๋ฉด ์์์ ๋ง๊ฒ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ ์๊ฐํ๋ค.
โ์ฒซ๋ฒ์งธ ์ ์ถ(๋ฐํ์์๋ฌ - IntegerOverflow)
IntegerOverflow๊ฐ ๋ฐ์.
๋ฌธ์ ์ ์กฐ๊ฑด์ ์์ด B์ ํฌํจ๋ ์์๊ฐ 10^18๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์์ ๋ณด์ง ๋ชปํ์๋ค...
int๋ก ์ ์ธํด์ค ๋ณ์๋ค์ unsigned long long int๋ก ๋ฐ๊ฟ์ฃผ์๊ณ , boolํ์ ์ exist ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ ํํํด์ค ์ ์์ด ๋นผ๊ณ ๊ณ ์ณ์ ๋ค์ ์ ์ถํด์ฃผ์๋ค.
โ๋๋ฒ์งธ ์ ์ถ(๋ฐํ์์๋ฌ - InvalidPointer)
์ด๋ฒ์ invalidPointer๋ผ๋ ์๋ฌ๊ฐ ๋ด๋๋ฐ ๊ตฌ๊ธ๋ง์ ํด๋ดค๋๋ฐ๋ ์ ํํ ์ด์ ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค.
๋ฒกํฐ์ ํฌ์ธํฐ ์์น๊ฐ ๋ฐ๋๊ณ ํ ๋น๋ ๋ฒกํฐ์ ํฌ์ธํฐ๋ฅผ free()ํ ๋ ์ฒ์ ํ ๋น์ ์ ์ธํ ๋ฒกํฐ์ ํฌ์ธํฐ ์ฃผ์์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ํ ๋ฐ๋ ๋ฒกํฐ์ ํฌ์ธํฐ ์ฃผ์๊ฐ ๋ฌ๋ผ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์๊ธด๋ค๊ณ ํ๋๋ฐ ์ ํ ๋ชจ๋ฅด๊ฒ ์๋ค...
๋ญ๊ฐ Node ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ฌธ์ ๊ฐ ์์ ๊ฑฐ๋ผ๊ณ ์์ํด์ map[i] = Node(a)๋ฅผ ํด์ฃผ๋ ๊ฒ์ map[i].setting(a)๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด ๊ฐ์ฒด์ ๊ฐ๋ค์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ธํ ํด์ฃผ์๋ค.
โ์ธ๋ฒ์งธ ์ ์ถ(๋ฐํ์์๋ฌ - InvalidPointer)
์ด๋ฒ์๋ InvalidPointer.
์ฐจ๋ผ๋ฆฌ Node๊ฐ์ฒด๋ฅผ ์ฐ์ง ์๊ณ pair๋ก ๊ตฌ์ฑ๋ vector๋ฅผ ์ฌ์ฉํ๋ค. ์ฝ๋๊ฐ ๋๋ฌด ์ง์ ๋ถํด์ก์ง๋ง ์ผ๋จ ๋ง์ถ๊ณ ์ ํ๋ ๋ง์์ด ์ปธ๋ค.
โ๋ค๋ฒ์งธ ์ ์ถ(๋ฐํ์์๋ฌ - InvalidPointer)
์ญ์๋ InvalidPointer ์๋ฌ๊ฐ ๋ด๋ค. ์ด ์๋ฌ๋ก 3,4์๊ฐ์ ๊ณ ํต๋ฐ๋ค ๋ณด๋ ๊ฒฐ๊ตญ ๋ฉํ ํํ ์ง๋ฌธํ๋ค.
๋ฉํ ๋์ ๋์์ผ๋ก ๊น๋ํ๊ฒ ์ ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ค์ ์ ์ถํด๋ณด์๋ค.
โ๋ค์ฏ๋ฒ์งธ ์ ์ถ(๋ฐํ์์๋ฌ - InvalidPointer)
4๋ฒ์ InvalidPointer ์๋ฌ๊ฐ ๋จ๊ณ ๋์์ผ ์ ์ด์ ์ด ๋ฐฉ๋ฒ์ด ์๋ชป๋์์์ ์์๋ค.๐
๋ง์ฝ N=7์ด๊ณ 27 4 8 6 3 12 9 16์ด ์์๋๋ก ๋ค์ด์์ ๋ ๊ณ์ ๊ณ ์งํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ฒ ๋๋ค๋ฉด
์ ๋ต ๋ฐฐ์ด์๋ 27 9 3 6 12 4๊น์ง๋ง ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ฆ 27๋ก ์ธํด ๋ค์ด๊ฐ 27 9 ๋๋ฌธ์ 4์์ ์ด์ ๊ฐ 12์ ์ดํ ๊ฐ8์ด ์์์๋ list์ ์ ๋ค์ ์กด์ฌํด์ผ ํ๋ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํด ์ง๋์น๊ฒ ๋๋ค !
์ด์ฌํ ์ง ์ฝ๋๋ฅผ ํ๋ฒ์ ์ง์๋ฒ๋ฆฌ๊ณ ๋ฌธ์ ๋ฅผ ๋ค์ ๋ณด์๋ค.
๐ก๋๋ฒ์งธ ์์ด๋์ด
๋ฐฅ๋จน๋ค๊ฐ ๋ถํ๋ฏ ๋ฐฑํธ๋ํน์ด ์๊ฐ๋ฌ๋ค !
๐ฅํ์ด๐ฅ
N์ด 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฏ๋ก N^3๋ณด๋จ ์์ผ๋ ์๊ฐ์ ๋ฌธ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๊ณ , ํ ๊ฐ์ ์ดํ์ ์ฌ ์ ์๋ ์(/3 or *2)๊ฐ ๋๋ค ์ ๋ ฅ ๋ฐฐ์ด์ ์กด์ฌํ์ง ์๋ค๊ณ ํ๋จํ๋ค.
Solveํจ์ ์ค๋ช
1. Solve ํจ์ ์ํ ์ ์ ์ด๋ฏธ ์ ๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ ์ ๋ต ๋ฐฐ์ด์ ๋ฃ์ด์คฌ์ผ๋ฏ๋ก n-2๋ฒ๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋ค.
2. n-2๋ฒ ๋์ ์ ๋ ฅ ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ ์ํํด์ ์ ๋ต ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ์ /3ํ๊ฑฐ๋ *2ํ ๊ฐ์ด ์ ๋ ฅ ๋ฐฐ์ด์ ์๋ ๊ฒฝ์ฐ ์ ๋ต ๋ฐฐ์ด ๋งจ ๋ค์ ๋ฃ์ด์ค๋ค.
3. /3ํ๊ฑฐ๋ *2ํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ continue
4. ๋ฐ๊นฅ์ชฝ ๋ฐ๋ณต๋ฌธ์ด n-2๋ฒ์งธ ๋ ๋ ์ ๋ต ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ N๊ณผ ๊ฐ๋ค๋ฉด ์ ๋ต ๋ฐฐ์ด์ ์ถ๋ ฅ, ๊ฐ์ง ์๋ค๋ฉด return ํด์ค๋ค.
โ์ฌ์ฏ๋ฒ์งธ ์ ์ถ(์ปดํ์ผ์๋ฌ)
์ฌ๊ท๋ฅผ ์ฌ์ฉํด์ ํ๋ ค๋ค๊ฐ ํ์ํ ๊ฒ ๊ฐ์๋ bool ํ์ ์ visited๋ฅผ ์ด๊ธฐํํด์ฃผ๋ memset ํจ์๋ฅผ ์ฌ์ฉํ๋๋ฐ #include <string.h>๋ฅผ ์ ์ง ์์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ด๋ค.๐ฅฒ
์ข ์ข ์์๋ ์ค์์ธ๋ฐ๋ค ๋ฐฑ์ค์์ ์๋ ค์ค์ ๊ธ๋ฐฉ ๊ณ ์ณค๋ค.
โญ๏ธ์ผ๊ณฑ๋ฒ์งธ ์ ์ถ(๋ง์์ต๋๋ค!!)
ํ์ ์๋ visited ๋ฐฐ์ด์ ์์ ์ฃผ๊ณ ์ ์ถํด์ ์ ๋ต์ด ๋ด๋ค!
์๋๋ ์ ์ถํ ์ฝ๋์ด๋ค.
#include <iostream>
#include <vector>
using namespace std;
typedef unsigned long long ull;
vector<ull> v;
bool visited[101];
int n;
void Solve(vector<ull> ans) {
for (int i = 1; i < n; i++) {
for (int j = 0; j < n; j++) {
if (ans.back() % 3 == 0 && v[j] == ans.back() / 3) {
ans.push_back(v[j]);
} else if (v[j] == ans.back() * 2) {
ans.push_back(v[j]);
}
}
if (i == (n - 1)) {
if (ans.size() == n) {
for (int k = 0; k < n; k++) {
cout << ans[k] << " ";
}
} else {
return;
}
}
}
}
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
cin >> n;
ull a;
for (int i = 0; i < n; i++) {
cin >> a;
v.push_back(a);
}
for (int i = 0; i < n; i++) {
vector<ull> ans;
ans.push_back(v[i]);
Solve(ans);
}
}
์ฌ๊ท๋ก ๋ ์ฝ๊ฒ ํ ์ ์์์ ๊ฒ ๊ฐ์๋ฐ ์ฌ๊ท๋ฅผ ์ ๋ชปํด์ ํธ๋ ๋ฐ ์ค๋ ๊ฑธ๋ฆฐ ๊ฒ ๊ฐ๋ค.
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 14888๋ฒ ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.07.13 |
---|---|
[๋ฐฑ์ค/C++] 1790๋ฒ ์ ์ด์ด ์ฐ๊ธฐ 2 (0) | 2022.07.11 |
[๋ฐฑ์ค/C++] 15558๋ฒ ์ ํ ๊ฒ์ (0) | 2022.07.07 |
[๋ฐฑ์ค/C++] 25212๋ฒ ์กฐ๊ฐ ์ผ์ดํฌ (0) | 2022.07.03 |
[๋ฐฑ์ค/C++] 25214๋ฒ ํฌ๋ฆผ ํ์คํ (0) | 2022.07.01 |