Development Artist

[COS Pro 1급, Python] 5차 7번 : 그래프에서 싸이클 찾기 본문

Algorithm/COS

[COS Pro 1급, Python] 5차 7번 : 그래프에서 싸이클 찾기

JMcunst 2022. 2. 28. 17:12
728x90
반응형

문제 유형

 빈칸

난이도

 normal

Note 

 1. 크루스칼 알고리즘 문제. 크루스칼 알고리즘에 대해 공부하면 매우 쉬움. find, merge 함수 이름보고 크루스칼인가? 하고 유추했다.

 

Code

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
def find(parent, u):
	if u == parent[u]:
		return u
	parent[u] = find(parent, parent[u]) # recursive, 루트노드 찾기
	return parent[u]

def merge(parent, u, v):
	u = find(parent, u)
	v = find(parent, v)
	if u == v:
		return True
	parent[u] = v # parent[v] = u (상관없음)
	return False

def solution(n, connections):
	answer = 0
	parent = [i for i in range(n+1)] # 초기 배열 세팅
	for i, connection in enumerate(connections):
		if merge(parent, connection[0], connection[1]):
			answer = i + 1
			break
	return answer

n = 3
connections = [[1, 2], [1, 3], [2, 3]]
ret = solution(n, connections)

print("solution 함수의 반환 값은", ret, "입니다.")

 

※ 가끔 코드 중 print(~)가 있습니다. 정리 못한 점 죄송합니다.

728x90
반응형
Comments