300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 구글 킥스타트
- 파이썬
- 딥러닝
- google coding competition
- PYTHON
- 알고리즘
- 브루트포스
- 순열
- AI
- 프로그래머스
- 킥스타트
- 코딩 테스트
- 코딩테스트
- CSS
- 동적 프로그래밍
- 운영체제
- 프로그래밍
- nlp
- 그래프
- 코딩
- OS
- kick start
- linux
- DFS
- dp
- BFS
- 리눅스
- 백준
- 네트워크
- 동적프로그래밍
Archives
- Today
- Total
오뚝이개발자
[백준13023] ABCDE 본문
728x90
300x250
문제
https://www.acmicpc.net/problem/13023
생각의 흐름
전형적인 DFS 문제이다. 문제의 요점은 A-B, B-C, C-D, D-E인 친구관계가 존재하는지를 조사하는 것이다. adjacent list를 이용하여 연결관계에 대한 정보를 저장하고 시작점을 vertex 0부터 n-1까지 돌아가면서 dfs를 사용하여 depth가 4이상이 되는 subgraph가 존재하는지를 판별하면 된다.
코드
n, m = map(int, input().split())
adj_lst = [[] for i in range(n)]
for i in range(m):
a, b = map(int, input().split())
adj_lst[a].append(b)
adj_lst[b].append(a)
visited = [False for i in range(n)]
def dfs(v, depth):
global ans
visited[v] = True
if depth == 4:
ans = True
return
for nxt in adj_lst[v]:
if not visited[nxt]:
dfs(nxt, depth+1)
visited[nxt] = False
ans = False
# 돌아가면서 dfs의 시작점 설정
for i in range(n):
dfs(i,0)
visited[i] = False
if ans:
break
print(1 if ans else 0)
728x90
300x250
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준16194] 카드 구매하기 2 (0) | 2020.04.15 |
---|---|
[백준3055] 탈출 (0) | 2020.04.14 |
[백준7576] 토마토 (0) | 2020.03.30 |
[백준14226] 이모티콘 (0) | 2020.03.23 |
[백준2178] 미로 탐색 (0) | 2020.03.22 |
Comments