코딩테스트(알고리즘)/baekjoon
[baekjoon] 13023 ABCDE (Javascript, Python)
Cafe Mocha
2023. 2. 27. 14:29
13023번: ABCDE
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
www.acmicpc.net
알고리즘 : dfs, 구현
- Javascript
/**
* 제출용. 아래 로컬용을 지우고 제출하자.
*/
// let input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n")
/**
* 로컬용, 예제.txt를 생성해서 예제를 복붙하자.
*/
function solution() {
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.trim()
.split("\n");
let [n, m] = input
.shift()
.split(" ")
.map((v) => +v);
input = input.map((v) => v.split(" ").map((val) => +val));
// 친구 관계
let friends = new Array(n + 1).fill().map((_) => []);
for (let i = 0; i < m; i++) {
let [x, y] = input[i];
friends[x].push(y);
friends[y].push(x);
}
let ans = 0;
// 한명씩 친구관계 확인 -> 4확인?
const dfs = (x, cnt, vis) => {
vis[x] = 1;
if (cnt === 4) {
ans = 1;
return;
}
if (!friends[x].length) return;
for (let i = 0; i < friends[x].length; i++) {
if (vis[friends[x][i]] === 0) {
vis[friends[x][i]] = 1;
dfs(friends[x][i], cnt + 1, vis);
vis[friends[x][i]] = 0;
}
}
};
for (let i = 0; i < n; i++) {
let vis = new Array(n + 1).fill(0);
dfs(i, 0, vis);
if (ans === 1) break;
}
console.log(ans);
}
solution();
-Python
import sys
sys.stdin = open("baekjoon/13023/input.txt","r")
input = sys.stdin.readline
n,m = map(int,input().split(" "))
friends = [[] for _ in range(n+1)]
for i in range(m):
a,b = map(int,input().split(" "))
friends[a].append(b)
friends[b].append(a)
vis = [0]*2001
ans = 0
def dfs (x,cnt):
global ans
vis[x]=1
if cnt==4:
ans=1
return
if len(friends[x])==0:
return
for i in friends[x]:
if vis[i]==0:
vis[i]=1
dfs(i,cnt+1)
vis[i]=0
for i in range(n):
dfs(i,0)
vis[i]=0
if ans==1:
break
print(ans)