문제 링크입니다: https://www.acmicpc.net/problem/14711
가능한 모든 입력에 대해 답이 유일하게 존재함이 보장된다. 이 문장이 핵심이였던 문제였습니다.
홀수번 돌리면 흑백이 바뀌고 짝수번 돌리면 원래 색깔이 유지됩니다.
따라서 전구 문제처럼 좌측 상단부터 순서대로 흑색 칸을 돌리면서 내려오도록 순서를 강제시키며 풀면 되는 문제였습니다.
#include <iostream>
#include <string>
using namespace std;
const int MAX = 1000;
string graph[MAX];
int visited[MAX][MAX];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
string s;
cin >> s;
for (int i = 0; i < N; i++)
graph[0] += s[i];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
if (graph[i][j] == '#')
{
//좌
if (j > 0)
visited[i][j - 1] ^= 1;
//우
if (j < N - 1)
visited[i][j + 1] ^= 1;
//하
if (i < N - 1)
visited[i + 1][j] ^= 1;
}
for (int j = 0; j < N; j++)
if (visited[i][j])
graph[i + 1] += '#';
else
graph[i + 1] += '.';
for (int j = 0; j < N; j++)
cout << graph[i][j];
cout << "\n";
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 16719번 ZOAC (0) | 2019.01.16 |
---|---|
백준 3085번 사탕 게임 (5) | 2019.01.15 |
백준 2503번 숫자 야구 (5) | 2019.01.14 |
백준 11521번 Boggle (3) | 2019.01.14 |
백준 16234번 인구 이동 (0) | 2019.01.12 |