본문 바로가기
728x90

유니온파인드7

[python] 백준 10775 공항 https://www.acmicpc.net/problem/10775 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 문제 해결 i번째 숫자 p인 비행기를 주차할 때 p부터 1까지 주차 가능한 지역을 살펴봐서 가능하면 주차하고 모두 안되면 지금까지 주차한 비행기 대수를 구하면 된다. 하지만 비행기 대수와 게이트 숫자가 매우 클 수 있다. $10^{5}$ 이므로 두번 풀로 for문을 돌릴 수 없다는 것이다. 그러면 한번에 찾을 수 있는 방법을 찾아야한다. 이 때 이용되는 것이 Un.. 2023. 3. 17.
[Python] 백준 4195 친구 네트워크 https://www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net 문제 풀이 - union find 문제이다. => 이에 대한 함수식을 쓰지 못하면 풀기 힘들다. (union find 문제라는 것은 알았는데 한동안 안풀면 까먹기 일상이다.) - 리스트를 이용하기보다(부모, 자식 모두 string name이 있어서 리스트로 index를 찾기는 너무 시간복잡도가 클 것 같다.) 딕셔너리(dict)을 이용하여 dict['name']= parents['nam.. 2022. 12. 21.
[Python] 백준 1717 집합의 표현 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 문제 해결 - 집합을 어떻게 합칠 것인가? ( union 사용해야겠지...?) - set.add() 사용 할 것인가? => 사용하면 좋은데 어떻게 일반적으로 표현을 할 것인가? ex) 1번집합 2번집합 합치면 뭐로 표현??? - 해결책 => 트리를 이용해 부모를 정하자 ! ex) 1번집합 2번집합 합치면 숫자 작은 1번집합이라고 하자! CODE import.. 2022. 12. 13.
728x90