이 영역을 누르면 첫 페이지로 이동
자라자 블로그의 첫 페이지로 이동

자라자

페이지 맨 위로 올라가기

자라자

개발자를 준비하는 자라자의 블로그입니다.

백준 1780번 종이의 개수 풀이

  • 2022.02.09 00:11
  • PS/BOJ

백준로고

[문제 링크]

https://www.acmicpc.net/problem/1780

[입출력 예]

입력 출력
9
0 0 0 1 1 1 -1 -1 -1
0 0 0 1 1 1 -1 -1 -1
0 0 0 1 1 1 -1 -1 -1
1 1 1 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
0 1 -1 0 1 -1 0 1 -1
0 -1 1 0 1 -1 0 1 -1
0 1 -1 1 0 -1 0 1 -1
10
12
11

[소스코드]

#include <bits/stdc++.h>
#define endl '\n';
using namespace std;

int arr[2187][2187];
int cnt[3]; //0번째 : -1 개수, 1번째: 0 개수 , 2번째: 1 개수

bool checkArr(int r1, int r2, int c1, int c2){
    for ( int i = r1 ; i < r2 ; i++){
        for (int j= c1; j <c2; j++ ){
            if (arr[i][j]!=arr[r1][c1]) return false;
        }
    }
    return true;
}

void func(int r1, int r2, int c1, int c2){
    // 모두 같을 경우
     if (checkArr(r1,r2,c1,c2)){
        cnt[arr[r1][c1]+1]++;
        return;
    }

    // 조금씩 다른 숫자 9개일 경우
    if ( r2-r1 ==3 && c2 - c1 ==3 ){
        for (int i= r1; i<r2; i++){
            for (int j=c1; j<c2; j++){
                cnt[arr[i][j]+1]++;
            }
        }
        return;
    }

    int p = (r2-r1)/3;

    func(r1, r1+p, c1, c1+p);
    func(r1+p, r1+2*p, c1, c1+p);
    func(r1+2*p, r2, c1, c1+p);
    func(r1, r1+p, c1+p, c1+p*2);
    func(r1+p, r1+2*p, c1+p, c1+p*2);
    func(r1+2*p, r2, c1+p, c1+p*2);
    func(r1, r1+p, c1+p*2, c2);
    func(r1+p, r1+2*p, c1+p*2, c2);
    func(r1+2*p, r2, c1+p*2, c2);

    return;

}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin>>n;

    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cin>>arr[i][j];
        }
    }

    func(0,n,0,n);

    for(int i=0; i<3; i++){
        cout<<cnt[i]<<endl;
    }


    return 0;
}
 
 
 
 

'PS > BOJ' 카테고리의 다른 글

백준 15683 감시 C++  (0) 2022.02.09
백준 9663 N-Queen  (0) 2022.02.09
백준 17478 재귀함수가 뭔가요? C++  (0) 2022.02.08
백준 1074번 Z C++  (0) 2022.02.08
백준 11729번 하노이 탑 이동순서 C++  (0) 2022.02.08

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 백준 15683 감시 C++

    백준 15683 감시 C++

    2022.02.09
  • 백준 9663 N-Queen

    백준 9663 N-Queen

    2022.02.09
  • 백준 17478 재귀함수가 뭔가요? C++

    백준 17478 재귀함수가 뭔가요? C++

    2022.02.08
  • 백준 1074번 Z C++

    백준 1074번 Z C++

    2022.02.08
다른 글 더 둘러보기

정보

자라자 블로그의 첫 페이지로 이동

자라자

  • 자라자의 첫 페이지로 이동

검색

메뉴

  • 🏠 HOME
  • 💡 ABOUT
  • 💻 GITHUB

카테고리

  • 분류 전체보기 (91)
    • Tech Note (3)
    • Dev Log (11)
    • Study Log (11)
    • Settings (3)
    • PS (53)
      • Programmers (21)
      • BOJ (32)
    • Diary (10)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 공식문서읽기
  • 리액트
  • ㅣ

나의 외부 링크

정보

자라자의 자라자

자라자

자라자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 자라자. Designed by Fraccino.

티스토리툴바