๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[๋ฐฑ์ค€] 3024๋ฒˆ: ๋งˆ๋ผํ†ค ํ‹ฑํƒํ†  - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/๋ฐฑ์ค€

[๋ฐฑ์ค€] 3024๋ฒˆ: ๋งˆ๋ผํ†ค ํ‹ฑํƒํ†  - C++

.23 2022. 1. 17. 14:16
๋ฌธ์ œ

์ƒ๊ทผ(Albert), ๋ฏผํ˜(Barbara), ์„ ์˜(Casper), ์ฐฝ์˜(Dinko), ํ˜„์ง„(Eustahije)์ด๊ฐ€ ๋งˆ๋ผํ†ค ํ‹ฑํƒํ†  ๊ฒŒ์ž„์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ๊ฒŒ์ž„์€ N×N ๋ณด๋“œ์—์„œ ์ง„ํ–‰ํ•œ๋‹ค.

๋งจ ์ฒ˜์Œ์— ๋ณด๋“œ์˜ ๋ชจ๋“  ์นธ์€ ๋น„์–ด์žˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด๋Š” ํ„ด์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ž์‹ ์˜ ์˜์–ด ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋นˆ ์นธ์— ์ ๋Š”๋‹ค. (๋‘ ์‚ฌ๋žŒ์˜ ์˜์–ด ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค)

๊ฒŒ์ž„์€ ์„ธ ๊ธ€์ž๊ฐ€ ํ–‰, ์—ด, ๋˜๋Š” ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ์†ํ•  ๋•Œ, ๊ทธ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์Šน๋ฆฌํ•˜๋ฉฐ, ๊ฒŒ์ž„์ด ๋๋‚˜๊ฒŒ ๋œ๋‹ค.

๋ณด๋“œํŒ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฒŒ์ž„์ด ๋๋‚ฌ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ๋๋‚ฌ๋‹ค๋ฉด ์Šน์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ณด๋“œํŒ์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 30)

๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๋ณด๋“œํŒ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. '.'๋Š” ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํ•ญ์ƒ ์Šน๋ฆฌํ•œ ์‚ฌ๋žŒ์ด ๋งŽ์•„์•ผ ํ•œ ๋ช…์ธ ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. 

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„์ด ๋๋‚ฌ๋‹ค๋ฉด, ์Šน๋ฆฌํ•œ ์‚ฌ๋žŒ์˜ ์˜์–ด ์ด๋ฆ„์˜ ์ฒซ ๊ธ€์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, "ongoing"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฒŒ์ž„์„ ์Šน๋ฆฌํ•œ ์‚ฌ๋žŒ์ด ์—†๋Š”๋ฐ, ๋นˆ ์นธ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ongoing์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.


๋‹จ์ˆœํžˆ ๊ฐ™์€ ๋ฐฉํ–ฅ์— ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ์„ธ๊ฐœ ์—ฐ์†์œผ๋กœ ์žˆ์œผ๋ฉด ์ถœ๋ ฅํ•˜๊ณ  ๋๋‚ด๋ฉด ๋˜๋Š” ๋ฌธ์ œ.

 

2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ ์—์„œ DFSํ•จ์ˆ˜ ํ‹€๋งŒ ๋”ฐ์™€์„œ ์กฐ๊ฑด์— ๋งž๊ฒŒ ๊ณ ์ณ์คฌ๋‹ค. bool๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•˜์—ฌ 3๊ฐœ ์—ฐ์† ์กด์žฌํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒํ•˜๊ณ , ์Šน๋ฆฌ์ž๊ฐ€ ์—†๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์— ongoing์„ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์— ongoing์„ ์ถœ๋ ฅ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

 

์กฐ๊ฑด๋„ ํ—ˆ์ˆ ํ•œ๊ฑฐ๊ฐ™๊ณ  ํ‘ผ ์‚ฌ๋žŒ์€ ๋งŽ์ด ์—†๋Š”๋ฐ๋‹ค๊ฐ€ ์ •๋‹ต๋ฅ ๋„ ๋‚ฎ์•„์„œ ์ซ„์•˜๋Š”๋ฐ. . ๊ฒŒ๋‹ค๊ฐ€ ์ฝ”๋“œ๋„ ์—„์ฒญ ๋Œ€์ถฉ ์งฐ๋Š”๋ฐ... ์ƒ๊ฐ๋ณด๋‹ค ๋ฐ”๋กœ ํ†ต๊ณผํ•ด์„œ ๋†€๋ž๋‹ค.. ๋‚˜์ค‘์— ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์ถ”๊ฐ€๋ผ์„œ ์žฌ์ฑ„์ ์ด๋ผ๋„ ๋˜๋ฉด ํ‹€๋ฆด์ˆ˜๋„

 

์ฝ”๋“œ
#include <iostream>
#include <string>
#include <vector>
#define MAX 31

using namespace std;

string tictactoe[MAX];
int dx[] = {0, 0, -1, 1, -1, -1, 1, 1};
int dy[] = {-1, 1, 0, 0, -1, 1, -1, 1};
int N;

bool DFS(int a, int b);

int main(void) {
    cin >> N;

    for(int i = 0; i < N; i++) {
        cin >> tictactoe[i];
    }

    for(int i = 0; i < N; i++) {
        for(int j = 0; j < N; j++) {
            if(tictactoe[i][j] != '.') {
                if(DFS(i, j)) return 0;
                else continue;
            }
        }
    }
    
    cout << "ongoing\n";
    return 0;
}

bool DFS(int a, int b) {
    char c = tictactoe[a][b];

    for(int i = 0; i < 8; i++) {
        if(a + 2 * dy[i] < 0 || a + 2 * dy[i] > N || b + 2 * dx[i] < 0 || b + 2 * dx[i] > N) continue;

        if(c == tictactoe[a + dy[i]][b + dx[i]] && c == tictactoe[a + 2 * dy[i]][b + 2 * dx[i]]) {
            cout << c << endl;
            return true;
        }
    }
    return false;
}

 

Comments