※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 3024번 문제인 마라톤 틱택토이다.
문제는 아래 링크를 확인하자.

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

 

3024번: 마라톤 틱택토

상근(Albert), 민혁(Barbara), 선영(Casper), 창영(Dinko), 현진(Eustahije)이가 마라톤 틱택토 게임을 하려고 한다. 이 게임은 N×N 보드에서 진행한다. 맨 처음에 보드의 모든 칸은 비어있다. 플레이어는 턴을

www.acmicpc.net

주어지는 보드에서 어느 방향으로든 3개의 '.'이 아닌 같은 연속한 문자가 존재한다면 그 문자를, 그런 문자가 없다면 "ongoing"을 출력하는 문제이다.

 

모든 가능한 네 방향으로의 연속한 세 칸의 쌍을 조사하는 브루트포스 코드를 작성해 문제를 해결하자. 이러한 쌍의 개수는 N이 30 이하이므로 충분히 적음을 알 수 있다.

 

아래는 제출한 소스코드이다.

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

int N;
string board[30];

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

	cin >> N;
	for (int r = 0; r < N; r++) cin >> board[r];
	for (int r = 0; r < N; r++) {
		for (int c = 0; c < N; c++) {
			if (r + 2 < N && board[r][c] != '.' && board[r][c] == board[r + 1][c] && board[r + 1][c] == board[r + 2][c]) {
				cout << board[r][c];
				return 0;
			}
			if (c + 2 < N && board[r][c] != '.' && board[r][c] == board[r][c + 1] && board[r][c + 1] == board[r][c + 2]) {
				cout << board[r][c];
				return 0;
			}
			if (r + 2 < N && c + 2 < N && board[r][c] != '.' && board[r][c] == board[r + 1][c + 1] && board[r + 1][c + 1] == board[r + 2][c + 2]) {
				cout << board[r][c];
				return 0;
			}
			if (r + 2 < N && c - 2 > -1 && board[r][c] != '.' && board[r][c] == board[r + 1][c - 1] && board[r + 1][c - 1] == board[r + 2][c - 2]) {
				cout << board[r][c];
				return 0;
			}
		}
	}

	cout << "ongoing";
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 9925 // C++] Scout Outing  (1) 2023.09.19
[BOJ 16211 // C++] 백채원  (0) 2023.09.18
[BOJ 22487 // C++] Do use segment tree  (0) 2023.09.16
[BOJ 16206 // C++] 롤케이크  (0) 2023.09.15
[BOJ 16207 // C++] 직사각형  (0) 2023.09.14

+ Recent posts