glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (76)
    • Problem_Solving (76)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Baekjoon
  • BOJ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • brute-force
  • DP
  • boostcampaitech
  • mst
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • binary search
  • Python
  • Algorithm
  • Java
  • ps
  • Stack
  • ๋™์ ๊ณ„ํš๋ฒ•
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • ์ด๋ถ„ํƒ์ƒ‰
  • bfs
  • c++
  • ์™„์ „ํƒ์ƒ‰

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[BOJ] ๋ฐฑ์ค€ 1018 ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)
Problem_Solving

[BOJ] ๋ฐฑ์ค€ 1018 ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)

2020. 2. 25. 19:31

์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฌธ์ œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ฃ ๋ฌธ์ œ ์ดํ•ด

1. ์ž…๋ ฅ๋ฐ›์„ ์ฒด์ŠคํŒ์€ 8*8 ์ด์ƒ์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

2. ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ, ํ•˜๋‚˜๋Š” ๊ฒ€์€์ƒ‰์ธ ๊ฒฝ์šฐ ๋‘ ์ข…๋ฅ˜์˜ ํŒ์œผ๋กœ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค.

3. ๊ฐ ์นธ์ด ๊ฒ€์€์ƒ‰๊ณผ ํฐ์ƒ‰ ์ค‘ ํ•˜๋‚˜๋กœ ์ƒ‰์น ๋˜์–ด ์žˆ๊ณ , ๋ณ€์„ ๊ณต์œ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์‚ฌ๊ฐํ˜•์€ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

4. 8*8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์œผ๋กœ ์ž˜๋ผ๋‚ธ ํ›„์— ๋ช‡ ๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ๋‹ค์‹œ ์น ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ, 8*8 ํฌ๊ธฐ๋Š” ์ฒด์ŠคํŒ ๋‚ด ์–ด๋””์„œ๋“  ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

5. ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์นธ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

 

์™„์ „ ํƒ์ƒ‰(Brute-force Search) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

๐Ÿ’ญ ํ’€์ด ๊ณผ์ •

 

๋จผ์ € ํฐ์ƒ‰ ์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” 8*8 ์ฒด์ŠคํŒ๊ณผ ๊ฒ€์ •์ƒ‰ ์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” 8*8 ์ฒด์ŠคํŒ์„ string ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด๋‘์—ˆ๋‹ค.

 

์†Œ์Šค์ฝ”๋“œ ์ง„ํ–‰ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

์ž…๋ ฅ๋ฐ›์€ ์ฒด์ŠคํŒ ์ขŒ์ธก ์ƒ๋‹จ์—์„œ ํ•œ ์นธ์”ฉ ์ด๋™ํ•˜๋ฉฐ ์ขŒํ‘œ๋ฅผ compare ํ•จ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด

 

compare ํ•จ์ˆ˜์—์„œ๋Š” ์ธ์ž๋กœ ๋„˜๊ฒจ๋ฐ›์€ ์ขŒํ‘œ๋ฅผ ์ขŒ์ธก์ƒ๋‹จ์œผ๋กœ ํ•˜๋Š” ์ž…๋ ฅ๋ฐ์ดํ„ฐ 8*8๋ฐฐ์—ด๊ณผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ํฐ์ƒ‰ ์ฒด์ŠคํŒ, ๊ฒ€์ •์ƒ‰ ์ฒด์ŠคํŒ๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐœ์ˆ˜๋งŒํผ ๊ฐ๊ฐ ์นด์šดํŠธํ•œ๋‹ค.(wCount, bCount)

๊ทธ๋ฆฌ๊ณ  ๋‘˜ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋‹ค์‹œ ๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ๋Š” ๊ธฐ์กด์˜ result ๊ฐ’๊ณผ ๋„˜๊ฒจ๋ฐ›์€ compareํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’ ์ค‘ ๋” ์ž‘์€ ๊ฒƒ์„ ์ €์žฅํ•˜๊ณ ,

๋‹ค์Œ ์ขŒํ‘œ๋ฅผ ๋‹ค์‹œ compare ํ•จ์ˆ˜๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

 

์ž‘์„ฑ ์–ธ์–ด: C++

 

#include <iostream>
#include <algorithm>
using namespace std;

// ์ž…๋ ฅ ๊ฐ’์„ ์ฑ„์šธ ๋ฐฐ์—ด(์ฒด์ŠคํŒ)
char map[60][60] = {0,};

// ๋งจ ์ขŒ์ธก ์ƒ๋‹จ ์นธ์˜ ์ƒ‰์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ
string whiteMap[8] = {
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
};
// ๋งจ ์ขŒ์ธก ์ƒ๋‹จ ์นธ์˜ ์ƒ‰์ด ๊ฒ€์ •์ƒ‰์ธ ๊ฒฝ์šฐ
string blackMap[8] = {
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"},
    {"BWBWBWBW"},
    {"WBWBWBWB"}
};

// ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์ฒด์ŠคํŒ๊ณผ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•ด์„œ
// ํฐ์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒ๊ณผ ๊ฒ€์ •์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒ ๊ฐ๊ฐ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ 
// ๋‘˜ ์ค‘ ๋” ์ž‘์€ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
int compare(int tRow, int tColumn){
    int wCount = 0, bCount = 0;
    
    for (int i = 0; i < 8; ++i) {
        for (int j = 0; j < 8; ++j) {
        	// ํฐ์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฒด์ŠคํŒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ์นธ ์ˆ˜
            if(whiteMap[i][j] != map[tRow+i][tColumn+j])    wCount++;
            // ๊ฒ€์ •์นธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฒด์ŠคํŒ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ์นธ ์ˆ˜
            if(blackMap[i][j] != map[tRow+i][tColumn+j])    bCount++;
        }
    }
    // ๋น„๊ตํ•˜์—ฌ ์ตœ์†Œ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.
    if(wCount <= bCount)    return wCount;
    else    return bCount;
}


int main(){
    int row, column, result = 99999999;
    
    scanf(" %d %d", &row, &column);
    // ์ž…๋ ฅ ๊ฐ’์— ๋”ฐ๋ผ ์ฒด์ŠคํŒ ์ฑ„์šฐ๊ธฐ
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < column; ++j) {
            scanf(" %c", &map[i][j]);
        }
    }
    
    for (int i = 0; i <= row-8; ++i) {
        for (int j = 0; j <= column-8; ++j) {
        	// ๊ฐ€์žฅ ์ตœ์†Œ์ธ ๊ฐ’์„ ์ฐพ์•„๋‚ธ๋‹ค.
            result = min(compare(i, j), result);
        }
    }
    
    cout << result << endl;
    
    return 0;
}

 

๐Ÿ† ๋ฐฐ์šด ์ 

 

๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋ดค์„ ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅธ ๋ฐฉ์‹์ด ์ด ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค.

๊ทผ๋ฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค ํ•˜๋‹ค๋ณด๋‹ˆ ์ž๊พธ ์‹ค์ˆ˜๊ฐ€ ์ƒ๊ฒจ ๋ฌธ์ œ ํ’€์ด์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค...

 

๋ธŒ๋ฃจํŠธ ํฌ์Šค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒ ๋‹ค๊ณ  ํŒ๋‹จํ•œ ๋งŒํผ,(์‚ฌ์‹ค ๋ฌธ์ œ ์œ ํ˜• ์ž์ฒด๊ฐ€ ๋ธŒ๋ฃจํŠธํฌ์Šค๋ผ๊ณ  ์“ฐ์—ฌ์žˆ๊ธด ํ•˜์ง€๋งŒ;;)

์šฐ์„  ์ถฉ๋ถ„ํžˆ ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋ฉด ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ๋ด์•ผ๊ฒ ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 1463 1๋กœ ๋งŒ๋“ค๊ธฐ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)  (0) 2020.02.27
[BOJ] ๋ฐฑ์ค€ 1182 ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)  (0) 2020.02.26
[BOJ] ๋ฐฑ์ค€ 2503 ์ˆซ์ž ์•ผ๊ตฌ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)  (0) 2020.02.24
[BOJ] ๋ฐฑ์ค€ 3085 ์‚ฌํƒ• ๊ฒŒ์ž„ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)  (0) 2020.02.19
[BOJ] ๋ฐฑ์ค€ 1011 Fly me to the Alpha Centauri  (2) 2020.01.07
    'Problem_Solving' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [BOJ] ๋ฐฑ์ค€ 1463 1๋กœ ๋งŒ๋“ค๊ธฐ / ๋™์  ๊ณ„ํš๋ฒ•(Dynamic-Programming)
    • [BOJ] ๋ฐฑ์ค€ 1182 ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)
    • [BOJ] ๋ฐฑ์ค€ 2503 ์ˆซ์ž ์•ผ๊ตฌ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)
    • [BOJ] ๋ฐฑ์ค€ 3085 ์‚ฌํƒ• ๊ฒŒ์ž„ / ์™„์ „ ํƒ์ƒ‰(Brute-force Search)
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”