Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- BAEKJOON
- android
- django
- 개발
- DART
- cos pro 1급
- 분할정복
- 동적계획법
- Python
- 코드품앗이
- 백준
- issue
- DFS와BFS
- cos
- codingtest
- C++
- 동적계획법과최단거리역추적
- Algorithm
- 코테
- cos pro
- 알고리즘
- DFS
- Vue
- 안드로이드
- Flutter
- vuejs
- AndroidStudio
- 코딩테스트
- 안드로이드스튜디오
- 파이썬
Archives
- Today
- Total
Development Artist
[COS Pro 1급, Python] 5차 7번 : 그래프에서 싸이클 찾기 본문
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
반응형
'Algorithm > COS' 카테고리의 다른 글
[COS Pro 1급, Python] 5차 9번 : 몇번 연산을 해야 하나요 (1) | 2022.02.28 |
---|---|
[COS Pro 1급, Python] 5차 8번 : 공약수 구하기 (0) | 2022.02.28 |
[COS Pro 1급, Python] 5차 6번 : p진법 to q진법 (0) | 2022.02.28 |
[COS Pro 1급, Python] 5차 5번 : 몬스터 잡기 (2) | 2022.02.28 |
[COS Pro 1급, Python] 5차 4번 : 각 숫자가 몇개가 있나요 (0) | 2022.02.28 |
Comments