๐ป
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 3967. ๋งค์ง ์คํ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 3967. ๋งค์ง ์คํ
๋ํจ๋ 2020. 3. 18. 20:19๋ฌธ์
๋งค์ง ์คํ๋ 1๋ถํฐ 12๊น์ง ์ซ์๊ฐ ํฅ์ฌ๊ทธ๋จ(hexagram)์ ์ฑ์์ ธ ์๋ ๋ชจ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋งค์ง ์คํ์ ์ด๋ฆ์ ๋งค์ง์ด ๋ค์ด๊ฐ๋ ์ด์ ๋ ์ซ์ ๋ค ๊ฐ๋ก ์ด๋ฃจ์ด์ง ์ค์ ์ซ์๋ฅผ ๋ชจ๋ ํฉํ๋ฉด 26์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ๊ทธ๋ฆผ์ ์ฌ์ฏ ์ค์ ์ฐ์ฌ ์๋ ์ซ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- 1 + 4 + 10 + 11
- 11 + 5 + 3 + 7
- 7 + 6 + 12 + 1
- 2 + 10 + 5 + 9
- 9 + 3 + 6 + 8
- 8 + 12 + 4 + 2
๋งค์ง ์คํ๋ฅผ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. ์ผ๋ถ๋ง ์ฑ์์ง ๋งค์ง ์คํ๊ฐ ์ฃผ์ด์ก์ ๋, ์๋ฅผ ์ ๋ถ ๋ค ์ฑ์์ ๋งค์ง ์คํ๋ฅผ ๋ง๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
๋งค์ง ์คํ์ ๋ชจ์์ด ์ฃผ์ด์ง๋ค. ์๊ฐ ์ฑ์์ ธ ์์ง ์์ ๊ณณ์ x๋ก, ์ฑ์์ ธ ์๋ ๊ณณ์ 'A'๋ถํฐ 'L'๊น์ง ์ํ๋ฒณ์ผ๋ก ์ฑ์์ ธ ์๋ค. i๋ฒ์งธ ์ํ๋ฒณ์ ์ซ์ i๋ฅผ ์๋ฏธํ๋ค. '.'๋ ๋งค์ง ์คํ์ ํํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๋ฌธ์์ด๋ค. ๋ชจ๋ ์ ๋ ฅ์ ์์ ์ ๋ ฅ๊ณผ ๊ฐ์ ํํ๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๋งค์ง ์คํ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ ์ค์ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค. (๋ชจ๋ ์ค์ ์์๋๋ก ๋ถ์ฌ์ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ ๋ค, ์ฌ์ ์์ผ๋ก ๋น๊ตํ๋ค.) ํญ์ ์ ๋ต์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์์ ์ ๋ ฅ1
์์ ์ถ๋ ฅ1
์๊ฐ
(0, 4) | ||||||||
(1, 1) | (1, 3) | (1, 5) | (1 ,7) | |||||
(2, 2) | (2, 4) | (2,6) | ||||||
(3, 1) | (3, 3) | (3,5) | (3, 7) | |||||
(4, 4) |
๋ณ๋ชจ์์ ์ด๋ป๊ฒ ๋ง๋ค์ด์ผํ๋ ๊ณ ๋ฏผํ๋๋ฐ, ์ธ๋ฑ์ค ๊ท์น์ ์ฐพ์ผ๋ ค๊ณ ํ๋ค๊ฐ ๊ผฌ์ฌ๋ฒ๋ ค์
๊ทธ๋ฅ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํ๋ค.
[์ฐธ๊ณ ]https://yabmoons.tistory.com/148
' ๋งค์ง ์คํ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ ์ค์ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค. '
์ถ๋ ฅ ์กฐ๊ฑด๋๋ฌธ์ ๊ณ ๋ฏผ์ ํ๋๋ฐ ์ด์ฐจํผ DFSํธ์ถ ์์๋ก ์ธํด ๋งจ ์ฒซ๋ฒ์งธ ์ถ๋ ฅํ๋ ๋ณ ๋ชจ์์ด ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์๊ฒ ๋๋ค.
exit(0) ๋์ return์ ์ฐ๊ฒ๋๋ฉด ์ถ๋ ฅ๊ฐ์ด 2๊ฐ ๋์จ๋ค.
F๋ก ์์ํ๋ ๊ฒ๊ณผ, G๋ก ์์ํ๋ ๊ฒ
๋ฐ๋ผ์ exit(0)์ ์จ์ ๊ฐ์ ์ข ๋ฃ ์์ผ์ค์ผํ๋ค.
์์ฑํ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
char star[5][9];
bool visited[13];
int cnt = 0;
vector< pair<int, int> > v;
bool check(){
if ((star[0][4] - 'A' + 1) + (star[1][3] - 'A' + 1) + (star[2][2] - 'A' + 1) + (star[3][1] - 'A' + 1) != 26) return false;
if ((star[0][4] - 'A' + 1) + (star[1][5] - 'A' + 1) + (star[2][6] - 'A' + 1) + (star[3][7] - 'A' + 1) != 26) return false;
if ((star[1][1] - 'A' + 1) + (star[1][3] - 'A' + 1) + (star[1][5] - 'A' + 1) + (star[1][7] - 'A' + 1) != 26) return false;
if ((star[3][1] - 'A' + 1) + (star[3][3] - 'A' + 1) + (star[3][5] - 'A' + 1) + (star[3][7] - 'A' + 1) != 26) return false;
if ((star[4][4] - 'A' + 1) + (star[3][3] - 'A' + 1) + (star[2][2] - 'A' + 1) + (star[1][1] - 'A' + 1) != 26) return false;
if ((star[4][4] - 'A' + 1) + (star[3][5] - 'A' + 1) + (star[2][6] - 'A' + 1) + (star[1][7] - 'A' + 1) != 26) return false;
return true;
}
void DFS(int idx, int n){
if(n == cnt){
if(check() == true){ // x์ ๊ฐ์์ ๋ฐฉ๋ฌธํ ์๊ฐ ๊ฐ์ผ๋ฉด ์ข
๋ฃ
for(int i=0; i<5; i++){
for(int j=0; j<9; j++){
cout << star[i][j];
}
cout << "\n";
}
exit(0);
}
}
for(int i=0; i<12; i++){
if(visited[i] == true) continue;
visited[i] = true;
star[v[idx].first][v[idx].second] = i + 'A';
DFS(idx+1, n+1);
star[v[idx].first][v[idx].second] = 'x';
visited[i] = false;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios::sync_with_stdio(false);
cin.tie(NULL);
for(int i=0; i<5; i++){
for(int j=0; j<9; j++){
cin >> star[i][j];
if('A' <= star[i][j] && star[i][j] <= 'L'){ // ์ํ๋ฒณ์ด๋ฉด true
visited[star[i][j] - 'A'] = true;
}else if(star[i][j] == 'x'){
v.push_back(make_pair(i, j));
cnt ++; // x์ ๊ฐ์๋ฅผ ์ธ์ ์ํ๋ฒณ ์ฑ์ธ ๊ฐฏ์ ์ฒดํฌ
}
}
}
DFS(0,0);
return 0;
}
Colored by Color Scripter
|
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ถ๋ฅ์์ - 16916. ๋ถ๋ถ ๋ฌธ์์ด (0) | 2020.03.20 |
---|---|
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 2156. ํฌ๋์ฃผ ์์ (0) | 2020.03.20 |
[๋ฐฑ์ค] ์๋ฃ๊ตฌ์กฐ - ์ฒ ๋ฒฝ ๋ณด์ ์๊ณ ๋ฆฌ์ฆ (0) | 2020.03.18 |
[๋ฐฑ์ค] ๋์ ํ๋ก๊ทธ๋๋ฐ - 1463. 1๋ก ๋ง๋ค๊ธฐ (0) | 2020.03.16 |
[๋ฐฑ์ค] ์๋ฎฌ๋ ์ด์ - 14891. ํฑ๋๋ฐํด (0) | 2020.03.15 |