https://www.acmicpc.net/problem/1780
1780λ²: μ’ μ΄μ κ°μ
N×Nν¬κΈ°μ νλ ¬λ‘ ννλλ μ’ μ΄κ° μλ€. μ’ μ΄μ κ° μΉΈμλ -1, 0, 1 μ€ νλκ° μ μ₯λμ΄ μλ€. μ°λ¦¬λ μ΄ νλ ¬μ λ€μκ³Ό κ°μ κ·μΉμ λ°λΌ μ μ ν ν¬κΈ°λ‘ μλ₯΄λ €κ³ νλ€. λ§μ½ μ’ μ΄κ° λͺ¨λ κ°μ μ
www.acmicpc.net
λ¬Έμ
N×Nν¬κΈ°μ νλ ¬λ‘ ννλλ μ’ μ΄κ° μλ€. μ’ μ΄μ κ° μΉΈμλ -1, 0, 1 μ€ νλκ° μ μ₯λμ΄ μλ€. μ°λ¦¬λ μ΄ νλ ¬μ λ€μκ³Ό κ°μ κ·μΉμ λ°λΌ μ μ ν ν¬κΈ°λ‘ μλ₯΄λ €κ³ νλ€.
- λ§μ½ μ’ μ΄κ° λͺ¨λ κ°μ μλ‘ λμ΄ μλ€λ©΄ μ΄ μ’ μ΄λ₯Ό κ·Έλλ‘ μ¬μ©νλ€.
- (1)μ΄ μλ κ²½μ°μλ μ’ μ΄λ₯Ό κ°μ ν¬κΈ°μ μ’ μ΄ 9κ°λ‘ μλ₯΄κ³ , κ°κ°μ μλ¦° μ’ μ΄μ λν΄μ (1)μ κ³Όμ μ λ°λ³΅νλ€.
μ΄μ κ°μ΄ μ’ μ΄λ₯Ό μλμ λ, -1λ‘λ§ μ±μμ§ μ’ μ΄μ κ°μ, 0μΌλ‘λ§ μ±μμ§ μ’ μ΄μ κ°μ, 1λ‘λ§ μ±μμ§ μ’ μ΄μ κ°μλ₯Ό ꡬν΄λ΄λ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ N(1 ≤ N ≤ 37, Nμ 3k κΌ΄)μ΄ μ£Όμ΄μ§λ€. λ€μ Nκ°μ μ€μλ Nκ°μ μ μλ‘ νλ ¬μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ -1λ‘λ§ μ±μμ§ μ’ μ΄μ κ°μλ₯Ό, λμ§Έ μ€μ 0μΌλ‘λ§ μ±μμ§ μ’ μ΄μ κ°μλ₯Ό, μ μ§Έ μ€μ 1λ‘λ§ μ±μμ§ μ’ μ΄μ κ°μλ₯Ό μΆλ ₯νλ€.
νμ΄
μ¬κ·λ₯Ό μ΄μ©νμ¬ νμλ€
1. n*n ν¬κΈ°λ§νΌ μ 체 κ²μ¬νλ©΄μ
2. νκ°μ μ’ μ΄λΌκ³ νλ¨μ΄ λλ©΄ (checkν¨μ) ν΄λΉ μ’ μ΄λ₯Ό μΉ΄μ΄νΈ ν 리ν΄
3. (n/3)*(n/3) ν¬κΈ°λ§νΌ μ 체 κ²μ¬ (1λ²μΌλ‘ λμκ°κΈ°)
μ¬κ·μ체λ₯Ό μκ°νλκ² μ΄μ§.. μ΄λ ΅κΈ΄ νμ§λ§
κ·Έλλ μ¬κ·μ μ΅μνλ€λ©΄ κ·Έλμ λ ν μ μλ λ¬Έμ
(λ¬Όλ‘ λλ μ¬κ· μ΄λ ΅λ€)
// Authored by : seondal
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int N;
int paper[2190][2190]; //3^7 = 2187
int cnt[3]; // -1μ’
μ΄ κ°―μ, 0μ’
μ΄ κ°―μ, 1μ’
μ΄ κ°―μ
bool check(int n, int x, int y) { // (x,y) λΆν° nκ° ν¬κΈ° μ’
μ΄κ° κ°μ μ«μλ‘ μ±μμ‘λμ§ νμΈ
for(int i=x; i<x+n; i++)
for(int j=y; j<y+n; j++)
if(paper[i][j] != paper[x][y])
return false;
return true;
}
void recur(int n, int x, int y) {
if(check(n,x,y)) {
cnt[paper[x][y] + 1]++;
return;
}
int next = n/3;
for(int i=x; i < x + 3*next; i = i + next)
for(int j=y; j < y + 3*next; j = j + next)
recur(next, i, j);
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
// μ΄κΈ°ν
cnt[0] = 0; cnt[1] = 0; cnt[2] = 0;
// μ
λ ₯
cin >> N;
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
cin >> paper[i][j];
// μ¬κ·
recur(N, 0, 0);
//μΆλ ₯
cout << cnt[0] << "\n" << cnt[1] << "\n" << cnt[2];
return 0;
}
/*
*/
'π Baaaaaarking > 0x0Bκ° - μ¬κ·' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ S1] λ°±μ€ 1992λ²: μΏΌλνΈλ¦¬ (83%) (0) | 2022.05.22 |
---|---|
[BOJ S3] 2603λ²: μμ’ μ΄ λ§λ€κΈ° (0) | 2022.05.22 |
[BOJ S5] λ°±μ€ 17478λ²: μ¬κ·ν¨μκ° λκ°μ? (0) | 2022.05.17 |
[BOJ S1][C++] λ°±μ€ 11729λ²: νλ Έμ΄ ν μ΄λ μμ (0) | 2022.05.11 |
[BOJ S1][C++] λ°±μ€ 1629λ²: κ³±μ (0) | 2022.05.04 |