๐Ÿ• Baaaaaarking/0x0B๊ฐ• - ์žฌ๊ท€

[BOJ S1] ๋ฐฑ์ค€ 1992๋ฒˆ: ์ฟผ๋“œํŠธ๋ฆฌ (83%)

์„ ๋‹ฌ 2022. 5. 22. 06:46
๋ฐ˜์‘ํ˜•

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

 

1992๋ฒˆ: ์ฟผ๋“œํŠธ๋ฆฌ

์ฒซ์งธ ์ค„์—๋Š” ์˜์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž N ์ด ์ฃผ์–ด์ง„๋‹ค. N ์€ ์–ธ์ œ๋‚˜ 2์˜ ์ œ๊ณฑ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋ฉฐ, 1 ≤ N ≤ 64์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” ๊ธธ์ด N์˜ ๋ฌธ์ž์—ด์ด N๊ฐœ ๋“ค์–ด์˜จ๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ 0 ๋˜

www.acmicpc.net

 

๋ฌธ์ œ

ํ‘๋ฐฑ ์˜์ƒ์„ ์••์ถ•ํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ฟผ๋“œ ํŠธ๋ฆฌ(Quad Tree)๋ผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ํฐ ์ ์„ ๋‚˜ํƒ€๋‚ด๋Š” 0๊ณผ ๊ฒ€์€ ์ ์„ ๋‚˜ํƒ€๋‚ด๋Š” 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์˜์ƒ(2์ฐจ์› ๋ฐฐ์—ด)์—์„œ ๊ฐ™์€ ์ˆซ์ž์˜ ์ ๋“ค์ด ํ•œ ๊ณณ์— ๋งŽ์ด ๋ชฐ๋ ค์žˆ์œผ๋ฉด, ์ฟผ๋“œ ํŠธ๋ฆฌ์—์„œ๋Š” ์ด๋ฅผ ์••์ถ•ํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์–ด์ง„ ์˜์ƒ์ด ๋ชจ๋‘ 0์œผ๋กœ๋งŒ ๋˜์–ด ์žˆ์œผ๋ฉด ์••์ถ• ๊ฒฐ๊ณผ๋Š” "0"์ด ๋˜๊ณ , ๋ชจ๋‘ 1๋กœ๋งŒ ๋˜์–ด ์žˆ์œผ๋ฉด ์••์ถ• ๊ฒฐ๊ณผ๋Š” "1"์ด ๋œ๋‹ค. ๋งŒ์•ฝ 0๊ณผ 1์ด ์„ž์—ฌ ์žˆ์œผ๋ฉด ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๋‚˜ํƒ€๋‚ด์ง€๋ฅผ ๋ชปํ•˜๊ณ , ์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์œ„, ์™ผ์ชฝ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜, ์ด๋ ‡๊ฒŒ 4๊ฐœ์˜ ์˜์ƒ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์••์ถ•ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ด 4๊ฐœ์˜ ์˜์—ญ์„ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๊ด„ํ˜ธ ์•ˆ์— ๋ฌถ์–ด์„œ ํ‘œํ˜„ํ•œ๋‹ค

์œ„ ๊ทธ๋ฆผ์—์„œ ์™ผ์ชฝ์˜ ์˜์ƒ์€ ์˜ค๋ฅธ์ชฝ์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์ˆซ์ž๋กœ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ์˜์ƒ์„ ์ฟผ๋“œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์••์ถ•ํ•˜๋ฉด "(0(0011)(0(0111)01)1)"๋กœ ํ‘œํ˜„๋œ๋‹ค.  N ×N ํฌ๊ธฐ์˜ ์˜์ƒ์ด ์ฃผ์–ด์งˆ ๋•Œ, ์ด ์˜์ƒ์„ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์˜์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž N ์ด ์ฃผ์–ด์ง„๋‹ค. N ์€ ์–ธ์ œ๋‚˜ 2์˜ ์ œ๊ณฑ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋ฉฐ, 1 ≤ N ≤ 64์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” ๊ธธ์ด N์˜ ๋ฌธ์ž์—ด์ด N๊ฐœ ๋“ค์–ด์˜จ๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ 0 ๋˜๋Š” 1์˜ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์˜์ƒ์˜ ๊ฐ ์ ๋“ค์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ถœ๋ ฅ

์˜์ƒ์„ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

[๐Ÿ• Baaaaaarking/0x0B๊ฐ• - ์žฌ๊ท€] - [BOJ S3] 2603๋ฒˆ: ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

 

[BOJ S3] 2603๋ฒˆ: ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

https://www.acmicpc.net/problem/2630 2630๋ฒˆ: ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ ์ฒซ์งธ ์ค„์—๋Š” ์ „์ฒด ์ข…์ด์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด N์ด ์ฃผ์–ด์ ธ ์žˆ๋‹ค. N์€ 2, 4, 8, 16, 32, 64, 128 ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ƒ‰์ข…์ด์˜ ๊ฐ ๊ฐ€๋กœ์ค„์˜ ์ •์‚ฌ๊ฐํ˜•์นธ๋“ค์˜ ์ƒ‰์ด ์œ—..

whkakrkr.tistory.com

 

์ง์ „ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ’€์ดํ–ˆ๋‹ค

๊ทผ๋ฐ ์ด์ œ ์ถœ๋ ฅ์—์„œ ์‚ด์ง ๊ณ ๋ฏผ์„ ํ–ˆ์—ˆ๋‹ค..

 

(1)

๋‹คํ–‰ํžˆ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ๋‹ค ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ์„œ

์›ํ• ๋•Œ ๊ด„ํ˜ธ๊ฐ€ ์—ด๋ฆฌ๊ณ  ๋‹ซํžˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ..

 

๋ฌธ์ œ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์ค‘๋ณต๋˜์–ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด์˜€๋‹ค

์ •๋‹ต : ((110(0101))(0010)1(0001))
๋‚ด๋‹ต : ((1)(1)(0)((0)(1)(0)(1)))((0)(0)(1)(0))(1)((0)(0)(0)(1))

๊ทธ๋ž˜์„œ.. ์ถœ๋ ฅํ• ๋•Œ

 

(2)

๊ด„ํ˜ธ๊ฐ€ ํ•œ๋ฒˆ๋‚˜์˜ค๋ฉด ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ 

2์—ฐ์†์œผ๋กœ ๋‚˜์™”์„ ๋–„๋งŒ ์ถœ๋ ฅ.. ํ•˜๋Š” ๋ฐฉ์‹..

+ ์‹œ์ž‘๊ณผ ๋์— ๊ด„ํ˜ธ ์ถ”๊ฐ€

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ

 

..๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ ..!

 

์ž๊พธ 83%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋œจ๋Š”๊ฒƒ์ด์˜€๋‹ค.

https://www.acmicpc.net/board/view/41647

์•Œ๊ณ ๋ณด๋‹ˆ ๋‹ต์ด 0์ด๋‚˜ 1 ํ•œ๊ฐœ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋˜.. ๊ฒƒ..

์ •๋‹ต : 0
๋‚ด๋‹ต : (0)

 

(3)

๊ทธ๋ž˜์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์คฌ๋‹ค..

๋‹ต์ด ํ•œ๊ฐœ์ธ ๊ฒฝ์šฐ๋Š” ๊ด„ํ˜ธ ์—†์ด ๋‹ต๋งŒ ์ถœ๋ ฅํ•˜๋„๋ก..!

 

// Authored by : seondal
// Co-authored by : -

//#include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

int N;
char video[64][64];
vector<char> v;

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(video[i][j] != video[x][y])
                return false;
    
    return true;
}

void recur(int n, int x, int y) {
    if(check(n,x,y)) {
        v.push_back(video[x][y]);
        return;
    }
    
    int next = n/2;
    for(int i=x; i < x+n; i = i+next) {
        for(int j=y; j < y+n; j = j+next) {
            v.push_back('(');	//(1)
            recur(next, i, j);
            v.push_back(')');
        }
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    // ์ž…๋ ฅ
    cin >> N;
    for(int i=0; i<N; i++)
        for(int j=0; j<N; j++)
            cin >> video[i][j];
    
    // ์žฌ๊ท€
    recur(N, 0, 0);
    
    //์ถœ๋ ฅ
    if(v.size()==1) {	// (3)
        cout << v[0];
    }
    else {	// (2)
        cout << "(";
        for(int i=0; i<v.size(); i++) {
            if(v[i]=='(') {
                if(v[i+1] == '(') cout << "(";
            }
            else if(v[i]==')') {
                if(v[i+1]==')') cout << ")";
            }
            else cout << v[i];
        }
        cout << ")";
    }
    
    return 0;
}

/*
 */

 

์•ฝ๊ฐ„.. ์ ‘๊ทผ์„ ์ž˜๋ชปํ•ด์„œ

๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ณ  ๊ทธ ๋ฌธ์ œ๋งŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ

์นด๋“œ๊นก๋งˆ๋ƒฅ ์ด์Šˆ ๋Œ๋ ค๋ง‰๊ธฐ๋ฅผ ํ•ด๋ฒ„๋ฆฐ.. ๊ฒƒ ๊ฐ™๊ธดํ•œ๋ฐ

 

๋‹ค๋ฅธ ๋‹ต ํ•ด์„ค์„ ๋ณด๋‹ˆ

์žฌ๊ท€ํ•จ์ˆ˜์—์„œ n=1 ์ผ๋•Œ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์กฐ๊ฑด์„ ๊ฑธ์—ˆ๋”๋‹ˆ

๋‚˜์ฒ˜๋Ÿผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์—†์ด ์ž˜ ํ’€๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค

์กฐ๋งŒ๊ฐ„ ๊ทธ ํ’€์ด๋กœ ๋‹ค์‹œ ๋„์ „ํ•ด๋ด์•ผ์ง€

๋ฐ˜์‘ํ˜•