PS
백준 16929. Two Dots
tose33
2022. 11. 1. 15:31
https://www.acmicpc.net/problem/16929
16929번: Two Dots
첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문
www.acmicpc.net
dfs로 같은 색인 구슬들을 탐색하면서 순서대로 번호를 매긴다.
만약 인접한 구슬들 중 같은색이면서 (현재번호-인접구슬번호)가 3 이상이면 정의된 사이클이 존재하는 것이다.
예를들어 입력이 아래와 같을때
4 4
YYYR
BYBY
BBBY
BBBY
(1,0)의 B부터 탐색을 시작한다고 생각해보자
우선 시작하는 곳에 1을 부여한다
1 | |||
다음으로 같은 B가 아래 밖에 없으므로 아래로 이동해서 번호 2를 부여한다
1 | |||
2 | |||
오른쪽으로 이동해 3을 부여
1 | |||
2 | 3 | ||
계속 깊이 우선 탐색으로 진행해서 다음과 같은 상태가 될때를 생각해보자
1 | |||
2 | 3 | 4 | |
6 | 5 |
6에서 인접한 0이 아닌 숫자는 3,5가 있다.
6-5 = 1 이므로 불가능
6-3 = 3 이므로 {3,4,5,6} 이렇게 싸이클이 성립한다.