๐ป
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 2630. ์์ข ์ด ๋ง๋ค๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค] ๋ถํ ์ ๋ณต - 2630. ์์ข ์ด ๋ง๋ค๊ธฐ
๋ํจ๋ 2020. 2. 20. 10:37๋ฌธ์
์๋ <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ ์ ์ฌ๊ฐํ์นธ๋ค๋ก ์ด๋ฃจ์ด์ง ์ ์ฌ๊ฐํ ๋ชจ์์ ์ข ์ด๊ฐ ์ฃผ์ด์ ธ ์๊ณ , ๊ฐ ์ ์ฌ๊ฐํ๋ค์ ํ์์์ผ๋ก ์น ํด์ ธ ์๊ฑฐ๋ ํ๋์์ผ๋ก ์น ํด์ ธ ์๋ค. ์ฃผ์ด์ง ์ข ์ด๋ฅผ ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ์๋ผ์ ๋ค์ํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์ ์ฌ๊ฐํ ๋ชจ์์ ํ์์ ๋๋ ํ๋์ ์์ข ์ด๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค.
์ ์ฒด ์ข ์ด์ ํฌ๊ธฐ๊ฐ N×N(N=2k, k๋ 1 ์ด์ 7 ์ดํ์ ์์ฐ์) ์ด๋ผ๋ฉด ์ข ์ด๋ฅผ ์๋ฅด๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
์ ์ฒด ์ข ์ด๊ฐ ๋ชจ๋ ๊ฐ์ ์์ผ๋ก ์น ํด์ ธ ์์ง ์์ผ๋ฉด ๊ฐ๋ก์ ์ธ๋ก๋ก ์ค๊ฐ ๋ถ๋ถ์ ์๋ผ์ <๊ทธ๋ฆผ 2>์ I, II, III, IV์ ๊ฐ์ด ๋๊ฐ์ ํฌ๊ธฐ์ ๋ค ๊ฐ์ N/2 × N/2์์ข ์ด๋ก ๋๋๋ค. ๋๋์ด์ง ์ข ์ด I, II, III, IV ๊ฐ๊ฐ์ ๋ํด์๋ ์์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ๊ฐ์ ์์ผ๋ก ์น ํด์ ธ ์์ง ์์ผ๋ฉด ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ฐ์ ํฌ๊ธฐ์ ๋ค ๊ฐ์ ์์ข ์ด๋ก ๋๋๋ค. ์ด์ ๊ฐ์ ๊ณผ์ ์ ์๋ผ์ง ์ข ์ด๊ฐ ๋ชจ๋ ํ์์ ๋๋ ๋ชจ๋ ํ๋์์ผ๋ก ์น ํด์ ธ ์๊ฑฐ๋, ํ๋์ ์ ์ฌ๊ฐํ ์นธ์ด ๋์ด ๋ ์ด์ ์๋ฅผ ์ ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
์์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ์๋์ ๋ <๊ทธ๋ฆผ 3>์ <๊ทธ๋ฆผ 1>์ ์ข ์ด๋ฅผ ์ฒ์ ๋๋ ํ์ ์ํ๋ฅผ, <๊ทธ๋ฆผ 4>๋ ๋ ๋ฒ์งธ ๋๋ ํ์ ์ํ๋ฅผ, <๊ทธ๋ฆผ 5>๋ ์ต์ข ์ ์ผ๋ก ๋ง๋ค์ด์ง ๋ค์ํ ํฌ๊ธฐ์ 9์ฅ์ ํ์์ ์์ข ์ด์ 7์ฅ์ ํ๋์ ์์ข ์ด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ข ์ด์ ํ ๋ณ์ ๊ธธ์ด N๊ณผ ๊ฐ ์ ์ฌ๊ฐํ์นธ์ ์(ํ์์ ๋๋ ํ๋์)์ด ์ฃผ์ด์ง ๋ ์๋ผ์ง ํ์์ ์์ข ์ด์ ํ๋์ ์์ข ์ด์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ ์ฒด ์ข ์ด์ ํ ๋ณ์ ๊ธธ์ด N์ด ์ฃผ์ด์ ธ ์๋ค. N์ 2, 4, 8, 16, 32, 64, 128 ์ค ํ๋์ด๋ค. ์์ข ์ด์ ๊ฐ ๊ฐ๋ก์ค์ ์ ์ฌ๊ฐํ์นธ๋ค์ ์์ด ์์ค๋ถํฐ ์ฐจ๋ก๋ก ๋์งธ ์ค๋ถํฐ ๋ง์ง๋ง ์ค๊น์ง ์ฃผ์ด์ง๋ค. ํ์์์ผ๋ก ์น ํด์ง ์นธ์ 0, ํ๋์์ผ๋ก ์น ํด์ง ์นธ์ 1๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์ซ์ ์ฌ์ด์๋ ๋น์นธ์ด ํ๋์ฉ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ์๋ผ์ง ํ์์ ์์ข ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๊ณ , ๋์งธ ์ค์๋ ํ๋์ ์์ข ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
8
1 1 0 0 0 0 1 1
1 1 0 0 0 0 1 1
0 0 0 0 1 1 0 0
0 0 0 0 1 1 0 0
1 0 0 0 1 1 1 1
0 1 0 0 1 1 1 1
0 0 1 1 1 1 1 1
0 0 1 1 1 1 1 1
์์ ์ถ๋ ฅ1
9
7
์๊ฐ
์์ข ์ด ์์ด ํ์์๋๋ ํ๋์์ผ๋ก ๊ฐ์ ๋๊น์ง ์์ข ์ด๋ฅผ ์๋ฅธ๋ค. ์์์ ์ ๊ฐ์ m์ ๋ฃ์ด์ฃผ๊ณ ๋น๊ตํด์ ๊ฐ์ง ์์ผ๋ฉด ์ฌ๊ท๋ก ํจ์๋ฅผ ์คํํด์ค๋ค. ๋ฐ๋ณตํ๋ค๊ฐ ๋ง์ง๋ง์ ์ฒ์์ ์์ข ์ด ์์ ํ๋ ๋ ๋ํด์ค๋ค.
์์ฑํ ์ฝ๋
#include <iostream>
using namespace std;
int arr[129][129];
int n, b, w;
void divide_conquer(int x, int y, int n){ //x:x์ขํ, y:y์ขํ, n:์ฌ์ด์ฆ
int m = arr[x][y];
int divide = n/2;
for(int i=x; i<x+n; i++){
for(int j=y; j<y+n; j++){
if(arr[i][j] != m){
divide_conquer(x, y, divide); //์ผ์ชฝ ์
divide_conquer(x, y+divide, divide); //์ค๋ฅธ์ชฝ ์
divide_conquer(x+divide, y, divide); //์ผ์ชฝ ์๋
divide_conquer(x+divide, y+divide, divide); //์ค๋ฅธ์ชฝ ์๋
return;
}
}
}
if(m == 1){
b++;
}else{
w++;
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> arr[i][j];
}
}
divide_conquer(0, 0, n);
cout << w << "\n" << b << "\n";
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 1753. ์ต๋จ๊ฒฝ๋ก(๋ฌธ์ ํธ๋์ค) (0) | 2020.02.20 |
---|---|
[๋ฐฑ์ค] DFS์BFS - 2667. ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ(DFSํ์ด) (0) | 2020.02.20 |
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 9461. ํ๋๋ฐ ์์ด (0) | 2020.02.20 |
[๋ฐฑ์ค] ์ฐ์ ์์ ํ - 1927. ์ต์ ํ (0) | 2020.02.19 |
[๋ฐฑ์ค] ์ฐ์ ์์ ํ - 11279. ์ต๋ ํ (0) | 2020.02.18 |