[백준] 1043번 거짓말 - python 파이썬
·
코딩테스트/백준
문제   이 문제는 문제를 이해하는데 오래걸렸던 문제이다....처음에는 단순하게 진실을 아는 사람이 속해있는 파티라면 참여를 못한다 생각했는데 당연히 오답이였다..  문제를 읽으면 알 수 있듯이 진실을 아는 사람이 파티에 속해있으면 진실을 몰랐던 사람도 이 파티에서 지민이가 진실을 말하기때문에 진실을 아는 사람이 된다.  즉, 진실을 아는 사람과 같은 집합이라면 진실을 아는 집합이 되는거다.  이런 패턴 어디서 많이 본 패턴이다. 바로 분리 집합 물론 이 문제는 집합 연산자로도 풀어줄 수 있는 문제이긴하나 Union-Find를 활용해서도 풀어주었다. 기존의 Union-Find는 대소비교로 작은값 또는 큰 값을 기준으로 union을 해줬다면 이 문제에서는 값의 크기를 기준으로 어떤 부모에 합쳐줄지 정하기 ..
[백준] 1976번 여행가자 - python파이썬
·
코딩테스트/백준
문제    이 문제를 처음봤을 때 생각이 난 알고리즘은 dfs/bfs , 플로이드 워샬이 있었다.그런데 더 간단한 문제로 풀 수 있었다. 바로 union-find 알고리즘   왜냐하면 도달할 수 있는 경로란 결국 같은 집합에 속한 원소라는 뜻이다. 그래서 같은 집합에 속한 원소들의 부모를 하나로 통일해준 뒤 경로에 포함된 원소가 서로 다른 부모를 가진다면 분리된 집합이라는 뜻으로 도달할 수 없는 경로임을 알 수 있다. 정답코드n = int(input())m = int(input())def union(x,y): x = find_parent(x) y = find_parent(y) #작은걸로 부모를 통일 if x      간단하게 풀릴 수 있는데 dfs를 써서 하느라 고생했다.참고로 df..