๐ป
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 14889. ์คํํธ์ ๋งํฌ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 14889. ์คํํธ์ ๋งํฌ
๋ํจ๋ 2020. 4. 19. 17:34๋ฌธ์
์ค๋์ ์คํํธ๋งํฌ์ ๋ค๋๋ ์ฌ๋๋ค์ด ๋ชจ์ฌ์ ์ถ๊ตฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. ์ถ๊ตฌ๋ ํ์ผ ์คํ์ ํ๊ณ ์๋ฌด ์ฐธ์๋ ์๋๋ค. ์ถ๊ตฌ๋ฅผ ํ๊ธฐ ์ํด ๋ชจ์ธ ์ฌ๋์ ์ด N๋ช ์ด๊ณ ์ ๊ธฐํ๊ฒ๋ N์ ์ง์์ด๋ค. ์ด์ N/2๋ช ์ผ๋ก ์ด๋ฃจ์ด์ง ์คํํธ ํ๊ณผ ๋งํฌ ํ์ผ๋ก ์ฌ๋๋ค์ ๋๋ ์ผ ํ๋ค.
BOJ๋ฅผ ์ด์ํ๋ ํ์ฌ ๋ต๊ฒ ์ฌ๋์๊ฒ ๋ฒํธ๋ฅผ 1๋ถํฐ N๊น์ง๋ก ๋ฐฐ์ ํ๊ณ , ์๋์ ๊ฐ์ ๋ฅ๋ ฅ์น๋ฅผ ์กฐ์ฌํ๋ค. ๋ฅ๋ ฅ์น Sij๋ i๋ฒ ์ฌ๋๊ณผ j๋ฒ ์ฌ๋์ด ๊ฐ์ ํ์ ์ํ์ ๋, ํ์ ๋ํด์ง๋ ๋ฅ๋ ฅ์น์ด๋ค. ํ์ ๋ฅ๋ ฅ์น๋ ํ์ ์ํ ๋ชจ๋ ์์ ๋ฅ๋ ฅ์น Sij์ ํฉ์ด๋ค. Sij๋ Sji์ ๋ค๋ฅผ ์๋ ์์ผ๋ฉฐ, i๋ฒ ์ฌ๋๊ณผ j๋ฒ ์ฌ๋์ด ๊ฐ์ ํ์ ์ํ์ ๋, ํ์ ๋ํด์ง๋ ๋ฅ๋ ฅ์น๋ Sij์ Sji์ด๋ค.
N=4์ด๊ณ , S๊ฐ ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
i\j12341234
1 | 2 | 3 | |
4 | 5 | 6 | |
7 | 1 | 2 | |
3 | 4 | 5 |
์๋ฅผ ๋ค์ด, 1, 2๋ฒ์ด ์คํํธ ํ, 3, 4๋ฒ์ด ๋งํฌ ํ์ ์ํ ๊ฒฝ์ฐ์ ๋ ํ์ ๋ฅ๋ ฅ์น๋ ์๋์ ๊ฐ๋ค.
- ์คํํธ ํ: S12 + S21 = 1 + 4 = 5
- ๋งํฌ ํ: S34 + S43 = 2 + 5 = 7
1, 3๋ฒ์ด ์คํํธ ํ, 2, 4๋ฒ์ด ๋งํฌ ํ์ ์ํ๋ฉด, ๋ ํ์ ๋ฅ๋ ฅ์น๋ ์๋์ ๊ฐ๋ค.
- ์คํํธ ํ: S13 + S31 = 2 + 7 = 9
- ๋งํฌ ํ: S24 + S42 = 6 + 4 = 10
์ถ๊ตฌ๋ฅผ ์ฌ๋ฏธ์๊ฒ ํ๊ธฐ ์ํด์ ์คํํธ ํ์ ๋ฅ๋ ฅ์น์ ๋งํฌ ํ์ ๋ฅ๋ ฅ์น์ ์ฐจ์ด๋ฅผ ์ต์๋ก ํ๋ ค๊ณ ํ๋ค. ์์ ์์ ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ 1, 4๋ฒ์ด ์คํํธ ํ, 2, 3๋ฒ ํ์ด ๋งํฌ ํ์ ์ํ๋ฉด ์คํํธ ํ์ ๋ฅ๋ ฅ์น๋ 6, ๋งํฌ ํ์ ๋ฅ๋ ฅ์น๋ 6์ด ๋์ด์ ์ฐจ์ด๊ฐ 0์ด ๋๊ณ ์ด ๊ฐ์ด ์ต์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(4 ≤ N ≤ 20, N์ ์ง์)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ S๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ค์ N๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , i๋ฒ ์ค์ j๋ฒ์งธ ์๋ Sij ์ด๋ค. Sii๋ ํญ์ 0์ด๊ณ , ๋๋จธ์ง Sij๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์คํํธ ํ๊ณผ ๋งํฌ ํ์ ๋ฅ๋ ฅ์น์ ์ฐจ์ด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
4
0 1 2 3
4 0 5 6
7 1 0 2
3 4 5 0
์์ ์ถ๋ ฅ1
0
์์ ์ ๋ ฅ2
6
0 1 2 3 4 5
1 0 2 3 4 5
1 2 0 3 4 5
1 2 3 0 4 5
1 2 3 4 0 5
1 2 3 4 5 0
์์ ์ถ๋ ฅ2
2
์๊ฐ
์ดํด :
- Sij = i๋ฒ ์ฌ๋๊ณผ j๋ฒ ์ฌ๋์ด ๊ฐ์ ํ์ ์ํ์ ๋, ํ์ ๋ํด์ง๋ ๋ฅ๋ ฅ์น
- ํ์ ๋ฅ๋ ฅ์น = ํ์ ์ํ ์์ ๋ฅ๋ ฅ์น Sij์ ํฉ
๋ชฉํ : ์คํํธ ํ์ ๋ฅ๋ ฅ์น์ ๋งํฌ ํ์ ๋ฅ๋ ฅ์น์ ์ฐจ์ด๋ฅผ ์ต์๋ก ๋ง๋ค๊ธฐ
๋ฐฉ๋ฒ : (i, j) ์์ ๊ตฌํ๊ณ ๊ทธ ๋์ ํ๋ณ ๋ฅ๋ ฅ์น ํฉ์ ๊ตฌํ๋ค.
1. ์คํํธ ํ๊ณผ, ๋งํฌ ํ์ผ๋ก ๋๋๊ณ
2. ๋ฅ๋ ฅ์น ํฉ ๊ตฌํ๊ธฐ
3. ๋ฅ๋ ฅ์น ์ฐจ์ด ์ต์๊ฐ ๋น๊ตํ๊ธฐ
์์ฑํ ์ฝ๋
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
|
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 1. ๋ ํ์ ๋๋๋ค.
// 2. ํ์ ๋ฅ๋ ฅ์น์ ํฉ์ ๊ตฌํ๋ค.
// 3. ๋ ํ์ ๋ฅ๋ ฅ์น์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
int main(int argc, const char *argv[])
{
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
int s[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> s[i][j];
}
}
vector<int> b(n); // ํ์ ๋๋ ๋ ์์ด์ ๊ตฌํ๊ธฐ ์ํ ๋ฐฐ์ด
for(int i=0; i<n/2; i++){
b[i] = 1;
}
sort(b.begin(), b.end());
int ans = 1000000000;
do{
// 1.
vector<int> start, link;
for(int i=0; i<n; i++){
if(b[i] == 0){
start.push_back(i); // ์คํํธํ ๋ฒํธ
}else{
link.push_back(i); // ๋งํฌํ ๋ฒํธ
}
}
// 2.
int one = 0;
int two = 0;
for(int i=0; i<n/2; i++){
for(int j=0; j<n/2; j++){
if(i == j) continue;
one += s[start[i]][start[j]];
two += s[link[i]][link[j]];
}
}
// 3.
int cha = one - two;
if(cha < 0){
cha = -cha;
}
if(ans > cha){
ans = cha;
}
}while(next_permutation(b.begin(), b.end()));
cout << ans << '\n';
return 0;
}
Colored by Color Scripter
|
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][์ผ์ฑ SW์ญ๋ ํ ์คํธ] 15683. ๊ฐ์ (0) | 2020.04.25 |
---|---|
[๋ฐฑ์ค][์ผ์ฑ SW์ญ๋ํ ์คํธ] 15685. ๋๋๊ณค ์ปค๋ธ (0) | 2020.04.21 |
[๋ฐฑ์ค] DFS์BFS - 14502. ์ฐ๊ตฌ์ (0) | 2020.04.08 |
[๋ฐฑ์ค] ๋ฌธ์์ด ์ฒ๋ฆฌ - 1764. ๋ฃ๋ณด์ก (0) | 2020.04.06 |
[๋ฐฑ์ค] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ - 2193. ์ด์น์ (0) | 2020.04.02 |