๋ฌธ์
์ฝ๋
#include <iostream>
#include <cmath>
using namespace std;
int map[2188][2188];
bool visited[2188][2188];
int N;
int cnt[3];
bool check(int r, int c, int div){
int cmp = map[r][c];
for(int i=r; i<r+div; i++){
for(int k=c; k<c+div; k++){
if(map[i][k] != cmp) return false;
}
}
return true;
}
void go(int r, int c, int div){
if(check(r,c, div)){
cnt[map[r][c] + 1] ++;
}
else{
int size = div / 3;
for(int i=0; i<3; i++){
for(int k=0; k<3; k++){
go(r+size*i, c+size*k, size);
}
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
cin>>map[i][k];
}
}
go(0,0,N);
cout<<cnt[0]<<'\n'<<cnt[1]<<'\n'<<cnt[2];
}
ํ์ด
๋ถํ ์ ๋ณต ๋ฌธ์ ์
๋๋ค.
N×Nํฌ๊ธฐ์ ํ๋ ฌ๋ก ํํ๋๋ ์ข
์ด๊ฐ ์๋ค. ์ข
์ด์ ๊ฐ ์นธ์๋ -1, 0, 1 ์ค ํ๋๊ฐ ์ ์ฅ๋์ด ์๋ค. ์ฐ๋ฆฌ๋ ์ด ํ๋ ฌ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ์ ์ ํ ํฌ๊ธฐ๋ก ์๋ฅด๋ ค๊ณ ํ๋ค.
- ๋ง์ฝ ์ข ์ด๊ฐ ๋ชจ๋ ๊ฐ์ ์๋ก ๋์ด ์๋ค๋ฉด ์ด ์ข ์ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ค.
- (1)์ด ์๋ ๊ฒฝ์ฐ์๋ ์ข ์ด๋ฅผ ๊ฐ์ ํฌ๊ธฐ์ ์ข ์ด 9๊ฐ๋ก ์๋ฅด๊ณ , ๊ฐ๊ฐ์ ์๋ฆฐ ์ข ์ด์ ๋ํด์ (1)์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ด์ ๊ฐ์ด ์ข ์ด๋ฅผ ์๋์ ๋, -1๋ก๋ง ์ฑ์์ง ์ข ์ด์ ๊ฐ์, 0์ผ๋ก๋ง ์ฑ์์ง ์ข ์ด์ ๊ฐ์, 1๋ก๋ง ์ฑ์์ง ์ข ์ด์ ๊ฐ์๋ฅผ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
void go(int r, int c, int div){
if(check(r,c, div)){ // ์ข
์ด๊ฐ ๋ชจ๋ ๊ฐ์ ์๋ก ๋์ด์๋ค๋ฉด ๊ฐฏ์ ์นด์ดํ
cnt[map[r][c] + 1] ++;
}
else{ // ์๋๋ผ๋ฉด ์๋ฅธ๋ค.
int size = div / 3;
for(int i=0; i<3; i++){
for(int k=0; k<3; k++){
go(r+size*i, c+size*k, size);
}
}
}
}
์ฌ์ค์ ์ ๋ก์ง์ด ๋ฌธ์ ์ ํต์ฌ ๋ก์ง์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
- N์ด 3^k๊ผด๋ก ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ์ข ์ด๋ฅผ ์๋ฅด๋ 2๋ฒ ์ฐ์ฐ์ด ์ํ๋ ๋๋ง๋ค 3์ผ๋ก ๋๋ ํฌ๊ธฐ๋งํผ ์๋ฅด๊ฒ ๋ฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ํ๊ณผ ์ด์ ๊ฐ๊ฐ ์ธ ๋ฒ์ฉ ์ด 9๋ฒ ๋ฐ๋ณตํ์ฌ go(r+size*i, c+size*k, size); ํ์์ผ๋ก ์๋ผ์ฃผ๊ฒ ๋๋ฉด ๋ฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 4485๋ฒ - ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? (1) | 2022.11.02 |
---|---|
[๋ฐฑ์ค,c++] 1043๋ฒ - ๊ฑฐ์ง๋ง (0) | 2022.09.28 |
[๋ฐฑ์ค,c++] 22858๋ฒ - ์์ ๋ณต๊ตฌ(small) (0) | 2022.09.28 |
[๋ฐฑ์ค,c++] 25644๋ฒ - ์ต๋ ์์น (0) | 2022.09.28 |
[๋ฐฑ์ค,c++] 1309๋ฒ - ๋๋ฌผ์ (0) | 2022.09.27 |
[๋ฐฑ์ค,c++] 12782๋ฒ - ๋นํธ ์ฐ์ ์ง์ (0) | 2022.09.27 |
๋๊ธ