반응형
문제
https://www.acmicpc.net/problem/2162
풀이
CCW를 사용해 선분이 교차되는지 확인하고, 유니온 파인드를 사용해 풀 수 있는 문제입니다.
입력받은 모든 선분들에 대해 교차하는지 확인을 해주어야 합니다.
교차한다면 union 연산을 실행하여 같은 부모로 넣어줍시다.
저는 숫자가 더 작은 번호가 부모로 넣어주었습니다.
모든 선분들에 대해 확인했다면, 다시 한번 find 연산을 해 최대 부모? 의 번호로 갱신시켜줍시다.
그 이후 부모의 번호가 다른 것들의 갯수를 출력해주면, 그룹의 수가 나올 것입니다.
그룹에 속한 선분의 갯수를 구하는 방법으로는 그룹번호가 key, 그룹번호가 나온 빈도수를 value인 딕셔너리를 선언하여
가장 큰 값이 가장 크기가 큰 그룹에 속한 선분의 갯수입니다.
소스코드
후기
CCW와 유니온 파인드를 합쳐서 풀이할 수 있는 문제였습니다.
이런 문제는 처음 접해봐서 재밌게 풀었습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2206 벽 부수고 이동하기 (Swift) (0) | 2023.05.31 |
---|---|
[BOJ] 백준 9205 맥주 마시면서 걸어가기 (Swift) (3) | 2023.05.26 |
[BOJ] 백준 20149 선분 교차 3 (Swift) (0) | 2023.05.25 |
[BOJ] 백준 17387 선분 교차 2 (Swift) (0) | 2023.05.24 |
[BOJ] 백준 17386 선분 교차 1 (Swift) (0) | 2023.05.24 |