티스토리 뷰
반응형
문제:www.acmicpc.net/problem/16929
16929번: Two Dots
첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문
www.acmicpc.net
N,M=map(int,input().split())
arr=[list(map(str,input()))for _ in range(N)]
visited = [[False]*M for _ in range(N)]
dy=[0,0,1,-1]
dx=[1,-1,0,0]
flag=False
def scope(y,x):
if y>=0 and y<N and x>=0 and x<M:
return True
else:
return False
def dfs(y,x,py,px,ball):
if visited[y][x]==1:
return True
visited[y][x]=True
for i in range(4):
ny=y+dy[i]
nx=x+dx[i]
if ny!=py or nx!=px:
if scope(ny,nx) and arr[ny][nx]==ball :
if dfs(ny,nx,y,x,ball): return True
return False
for i in range(N):
for j in range(M):
if visited[i][j]:
continue
if dfs(i,j,0,0,arr[i][j]):
flag=True
break
print("Yes") if flag else print("No")
참고:https://shinbian11.tistory.com/60
[백준] 16929번 : Two Dots
https://www.acmicpc.net/problem/16929 16929번: Two Dots 첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점
shinbian11.tistory.com


위의 그림은 싸이클이 있는 경우와 없는 경우의 예를 보여준다.
싸이클이 있는 경우에는 방문한 적 있는 점을 다시 만날 경우가 싸이클이 존재하는 경우이다.
단 바로 이전의 점을 방문할 우려가 있어서 if ny!=py or nx!=px: 라는 조건문을 걸어 주었다.
그러면 ny==py and nx==px 인 경우를 제외하고 주변의 모든 점을 깊이 우선 순회를 할 수 있기 때문이다.
1
2
3
4
|
if dfs(i,j,0,0,arr[i][j]):
flag=True
break
print("Yes") if flag else print("No")
|
cs |
그리고 싸이클 존재유무만 알면 되므로 싸이클이 존재하면 flag=True로 두고 반복문을 나간다.
싸이클 존재 유무에 따른 결과값을 출력하면 된다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
16964번 DFS 스페셜 저지 백준 파이썬 (0) | 2020.12.12 |
---|---|
16940번 BFS 스페셜 저지 백준 파이썬 (0) | 2020.12.12 |
16947번 서울 지하철 2호선 백준 파이썬 (0) | 2020.12.11 |
이분 그래프 1707번 백준 파이썬 (0) | 2020.12.10 |
14391번 종이조각 백준 파이썬 (3) | 2020.12.09 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Celery
- DRF
- Collections
- setattr
- PostgreSQL
- headers
- 2021 KAKAO BLIND RECRUITMENT
- Java
- docker
- 알고리즘
- ubuntu
- django
- env
- Spring
- docker-compose
- Linux
- 프로그래머스
- 그래프
- 백준
- BFS
- Python
- 파이썬
- 자바
- dockerignore
- Command Line
- postgres
- 카카오
- thread
- Pattern
- 면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함