일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래밍
- 대회
- 백준
- 파이썬
- 서버
- Naver boostcamp
- 서블릿
- 네이버
- AI Tech 4기
- 구현
- 4기
- cs50
- QNA 봇
- 웹 프로그래밍
- Naver boostcourse
- BOJ
- 백엔드
- 장고
- 부스트캠프
- boostcourse
- 웹
- Customer service 구현
- sts
- Django
- 2021 Dev-matching 웹 백엔드 개발자
- 풀스택
- 레벨2
- AI Tech
- P Stage
- 프로그래머스
Archives
- Today
- Total
daniel7481의 개발일지
[BOJ]13023 ABCDE 본문
반응형
https://www.acmicpc.net/problem/13023
[출처 BOJ]
문제
BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다.
오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.
- A는 B와 친구다.
- B는 C와 친구다.
- C는 D와 친구다.
- D는 E와 친구다.
위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다.
둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다.
출력
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
풀이
모든 사람들에 대하여 순차적으로 5명의 연이은 친구들이 있는지 탐색하면 되는 문제다. 깊이 우선 탐색으로 풀면 시간적인 측면에서 유리할 거 같아서 재귀를 이용하여 풀어보았다. 이 문제의 중점은 방문 처리였던 것 같다. 일반적인 방문처리와 다르게 이 문제에서는 한 사람에 대한 재귀가 완료되면 방문처리를 False로 바꿔줘야 한다. 예로 들면 4-3-2로 재귀를 해줄 때 3은 1과 연결이 되어있다면, 4 3 2에서 4 3 1로 갈 때 2는 방문처리가 되지 않은 상태여야 한다. 왜냐하면 둘은 독립된 사건이기 때문이다. 이 점만 해결하면 다른 DFS문제와 다르지 않다.
import sys
input = lambda: sys.stdin.readline().rstrip()
n, m = map(int, input().split())
friend = [[] for _ in range(n)]
for _ in range(m):
a, b = map(int, input().split())
friend[a].append(b)
friend[b].append(a)
visited = [False for _ in range(n)]
flag = False
def dfs(x, cnt):
global flag
visited[x] = True
for i in friend[x]:
if not visited[i]:
if cnt == 3:
flag = True
return
dfs(i,cnt+1)
visited[x] = False
for i in range(n):
dfs(i, 0)
if flag:
break
if flag:
print(1)
else:
print(0)
반응형
'BOJ' 카테고리의 다른 글
[BOJ]1743 음식물 피하기 (0) | 2022.06.28 |
---|---|
[BOJ] 2251 물통 (0) | 2022.06.28 |
[BOJ]연세대학교 미래캠퍼스 슬기로운 코딩생활 Open Contest (0) | 2022.06.25 |
[BOJ] 1325 효율적인 해킹 (0) | 2022.03.26 |
[BOJ] 12026 BOJ 거리 (0) | 2022.02.13 |