[๋ฐฑ์ค€/C++] 2239๋ฒˆ ์Šค๋„์ฟ 

2022. 8. 11. 19:47ยทPS/C++
728x90
๋ฐ˜์‘ํ˜•

๋ฐฑ์ค€


๐Ÿค”๋ฌธ์ œ ์ดํ•ด

ํ–‰๊ณผ ์—ด, ๊ทธ๋ฆฌ๊ณ  3x3์˜ ์ž‘์€ ์‚ฌ๊ฐํ˜• ์•ˆ์— 1~9๊นŒ์ง€์˜ ์ˆ˜๊ฐ€ ์ค‘๋ณต์—†์ด ๋‚˜์˜ค๊ฒŒ ๋ณด๋“œ๋ฅผ ์งœ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์กฐ๊ฑด
๋ณด๋“œ : 9 x 9
์‹œ๊ฐ„ : 2์ดˆ
๋ฉ”๋ชจ๋ฆฌ : 256MB

๐Ÿ”ฅํ’€์ด๐Ÿ”ฅ

๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ์‹์œผ๋กœ ๊ฐ’์ด ๋น„์–ด์žˆ๋Š” ๋ถ€๋ถ„์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ๋„ฃ์–ด๋ณด๋ฉด์„œ ์ฒ˜์Œ์œผ๋กœ ๋ณด๋“œ๊ฐ€ ์ˆซ์ž๋กœ ๋‹ค ์ฑ„์›Œ์งˆ ์ˆ˜ ์žˆ์„ ๋•Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

๋ณ€์ˆ˜ 

- bool width[i][num] : i๋ฒˆ์งธ ํ–‰์— num์˜ ์กด์žฌ ์œ ๋ฌด

- bool length[i][num] : i๋ฒˆ์งธ ์—ด์— num์˜ ์กด์žฌ ์œ ๋ฌด

- bool square[i][num] : i๋ฒˆ์งธ ์‚ฌ๊ฐํ˜•์— num์˜ ์กด์žฌ ์œ ๋ฌด

    - square์˜ ๊ฒฝ์šฐ ์ขŒํ‘œ๊ฐ€ (i, j)์ผ ๋•Œ (i/3)*2 + (j/3)์„ ๊ณ„์‚ฐํ•œ ๊ฐ’์ด ๋ช‡๋ฒˆ์งธ ์‚ฌ๊ฐํ˜•์ธ์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

์žฌ๊ท€ํ•จ์ˆ˜ solve (int i, int j)

- ํ˜„์žฌ ์ƒํƒœ : ์Šค๋„์ฟ  ๋ณด๋“œ์—์„œ์˜ ํ˜„์žฌ ์œ„์น˜ (i, j)

- ๋‹ค์Œ ์ƒํƒœ : j+1์ด ๋ณด๋“œ ๋‚ด๋ถ€์ด๋ฉด solve(i, j+1), ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด solve(i+1, 0)

- ์ง„์ž… ์ƒํƒœ : ๋ณด๋“œ์˜ ์ฒซ ์œ„์น˜ (0, 0)

- ์ข…๋ฃŒ ์ƒํƒœ : ๋ณด๋“œ์˜ ๋๊นŒ์ง€ ์ˆซ์ž๋กœ ๋‹ค ์ฑ„์šด ๊ฒฝ์šฐ

 

ํ•จ์ˆ˜ vector<int> availableNumbers(int i, int j)

- (i, j)์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ๋ฐ˜ํ™˜

 

โŒํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ฒ˜์Œ์—” i==9์ผ ๋•Œ ์ฆ‰, ๋ณด๋“œ๊ฐ€ ๋‹ค ์ฑ„์›Œ์กŒ์„ ๋•Œ ์ถœ๋ ฅํ•˜๊ณ  return์„ ํ•ด์คฌ๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ๋‹ต๋“ค์ด ๋‹ค ์ถœ๋ ฅ๋˜๊ฒŒ ๋˜์–ด ์ถœ๋ ฅ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณด๋“œ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋‹ค ์ฑ„์›Œ์ง€๋ฉด ์ฆ‰, ์—ฌ๋Ÿฌ ๋‹ต ์ค‘ ์‚ฌ์ „์‹์œผ๋กœ ๊ฐ€์žฅ ์•ž์„  ๋‹ต์„ ์ถœ๋ ฅํ•˜๊ณ  ๋‚˜๋ฉด ํ”„๋กœ๊ทธ๋žจ ์ž์ฒด๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค๋Š” exit(0); ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

โœ๏ธ ํ›„๊ธฐ

์žฌ๊ท€ํ•จ์ˆ˜์˜ return ๋ถ€๋ถ„์„ ์œ ์˜ํ•ด์•ผ๊ฒ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณด๋“œ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” 1~9๊นŒ์ง€๋กœ ๋น„ํŠธ๋งˆ์Šคํฌ๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์—ฐ์‚ฐ์ด ๋” ๋นจ๋ผ์งˆ ๊ฒƒ ๊ฐ™๋‹ค.


#include <iostream>
#include <vector>

using namespace std;

int map[10][10];
bool width[10][10];
bool length[10][10];
bool square[10][10];
string x;

vector<int> availNumbers(int i, int j) {
    vector<int> tmp;
    int idx = (i / 3) * 3 + j / 3;
    for (int k = 1; k <= 9; k++) {
        if (!width[i][k] && !length[j][k] && !square[idx][k]) {
            tmp.push_back(k);
        }
    }
    return tmp;
}

void printMap() {
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            cout << map[i][j];
        }
        cout << "\n";
    }
}

void solve(int i, int j) {
    if (i == 9) {
        printMap();
        exit(0);
    }

    if (map[i][j] == 0) {
        vector<int> tmp = availNumbers(i, j);
        if (tmp.empty())
            return;
        for (int k = 0; k < tmp.size(); k++) {
            int num = tmp[k];
            int idx = (i / 3) * 3 + j / 3;
            map[i][j] = num;
            width[i][num] = true;
            length[j][num] = true;
            square[idx][num] = true;

            if (j < 8)
                solve(i, j + 1);
            else
                solve(i + 1, 0);

            map[i][j] = 0;
            width[i][num] = false;
            length[j][num] = false;
            square[idx][num] = false;
        }
    } else {
        if (j < 8)
            solve(i, j + 1);
        else
            solve(i + 1, 0);
    }
}

int main() {
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(false);

    for (int i = 0; i < 9; i++) {
        cin >> x;
        for (int j = 0; j < 9; j++) {
            map[i][j] = x[j] - '0';
            int num = map[i][j];
            if (num != 0) {
                width[i][num] = true;
                length[j][num] = true;
                int idx = (i / 3) * 3 + j / 3;
                square[idx][num] = true;
            }
        }
    }
    solve(0, 0);
}
728x90
๋ฐ˜์‘ํ˜•

'PS > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€/C++] 9663๋ฒˆ N-Queen  (0) 2022.08.16
[๋ฐฑ์ค€/C++] 16457๋ฒˆ ๋‹จํ’์žŽ ์ด์•ผ๊ธฐ  (0) 2022.08.12
[๋ฐฑ์ค€/C++] 1043๋ฒˆ ๊ฑฐ์ง“๋ง  (0) 2022.07.26
[๋ฐฑ์ค€/C++] 17143๋ฒˆ ๋‚š์‹œ์™•  (0) 2022.07.26
[๋ฐฑ์ค€/C++] 1766๋ฒˆ ๋ฌธ์ œ์ง‘  (0) 2022.07.21
'PS/C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€/C++] 9663๋ฒˆ N-Queen
  • [๋ฐฑ์ค€/C++] 16457๋ฒˆ ๋‹จํ’์žŽ ์ด์•ผ๊ธฐ
  • [๋ฐฑ์ค€/C++] 1043๋ฒˆ ๊ฑฐ์ง“๋ง
  • [๋ฐฑ์ค€/C++] 17143๋ฒˆ ๋‚š์‹œ์™•
yulee_to
yulee_to
  • yulee_to
    yulee
    yulee_to
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (170)
      • CS (2)
        • OS (0)
        • DB (0)
        • Network (2)
      • Develop (1)
        • Spring (9)
        • Java (12)
        • Python (0)
        • Algorithm (0)
        • ๊ธฐํƒ€ (0)
      • PS (39)
        • C++ (39)
        • Java (0)
      • TIL (61)
      • Book (39)
        • ์ž๋ฐ”์˜ ์‹  (32)
        • ์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›๋ฆฌ์™€ ์ดํ•ด (7)
      • ETC (4)
        • Blog (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    C++
    ์ž๋ฐ”
    ์—์Šค๋„ท์‹œ์Šคํ…œ
    ์—์Šค๋„ท์‹œ์Šคํ…œ ๋ถ€ํŠธ์บ ํ”„
    ์ž๋ฐ”์˜ ์‹ 
    ์Šคํ„ฐ๋””
    Java
    ๋ฐฑ์ค€
    ํด๋ผ์šฐ๋“œ ํ™œ์šฉ ๋„คํŠธ์›Œํฌ ์—”์ง€๋‹ˆ์–ด ๋ถ€ํŠธ์บ ํ”„
    1์ผ1๋ฐฑ์ค€
    aws
    TiL
    GodOfJava
    boj
    ์Šคํ”„๋ง ์ž…๋ฌธ
    ๋ถ€ํŠธ์บ ํ”„ํ›„๊ธฐ
    ๊ฐ์ฒด์ง€ํ–ฅ
    EC2
    ๋ฉ€ํ‹ฐ์บ ํผ์Šคit๋ถ€ํŠธ์บ ํ”„
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • 250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
yulee_to
[๋ฐฑ์ค€/C++] 2239๋ฒˆ ์Šค๋„์ฟ 
์ƒ๋‹จ์œผ๋กœ

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