12/9 풀이

2024. 12. 9. 19:17·Algorithm/Leetcode

Graph Valid Tree

https://neetcode.io/problems/valid-tree

 

NeetCode

 

neetcode.io

해당 무방향 그래프가 올바른 트리 형태인지 판단하는 문제였다.
올바른 트리이기 위한 조건은

  1. 간선의 갯수가 노드 - 1개일 것.
  2. 모든 노드가 서로 연결되어 있을 것
  3. 사이클 x

무방향 그래프인 경우에 유니온 파인드를 사용해서 두 노드가 같은 집합에 속하는지 판단하고, 같은 집합에 속하는 경우 사이클이 있다고 판단하여 트리 조건에 부합하지 않도록 구현했다. 방향이 있는 그래프에선 위상 정렬을 사용하여 사이클 여부를 판단했지만, 위상 정렬은 무방향 그래프에선 잘 사용하지 않는다고 한다.


Number of Connected Components in an Undirected Graph

https://neetcode.io/problems/count-connected-components

 

NeetCode

 

neetcode.io

원소들이 같은 집합일 때, 1씩 더해주는 문제로 마찬가지로 유니온 파인드를 사용해서 풀어주었다.

HashSet을 사용하여 부모 노드값들을 넣어주었고, 최종적으로 set의 사이즈를 리턴해줘서 풀었다. 
처음엔 parent[i] 값들을 set에 넣어주었는데, 그런 경우 문제가 발생했었다.

이런 형태인 경우

4 6
5 4
6 6
7 6

 

모두 같은 집합에 속하는데, parent[i]의 값들을 출력하는 경우 (5,4) 값이 다르기 때문에 코드 상으론 집합이 두개로 나뉜다. 

따라서, find 메서드를 통해서 재귀적으로 부모를 찾아야 모두 같은 집합임을 확인할 수 있다.

4 6
5 6
6 6
7 6

 

(5의 부모 노드가 6임을 확인 가능)

무방향 그래프인 경우 위상 정렬을 통해 사이클 존재를 판단하고, 방향 그래프인 경우 유니온 파인드를 통해 문제를 접근해야겠다. Or 간단하게 dfs, bfs로 풀이 

 

 

 

'Algorithm > Leetcode' 카테고리의 다른 글

12/10 ~ 13 풀이  (1) 2024.12.13
12/10 풀이  (0) 2024.12.13
12/8 풀이  (0) 2024.12.09
12/7 풀이  (0) 2024.12.08
12/5 풀이  (1) 2024.12.07
'Algorithm/Leetcode' 카테고리의 다른 글
  • 12/10 ~ 13 풀이
  • 12/10 풀이
  • 12/8 풀이
  • 12/7 풀이
미네구스
미네구스
  • 미네구스
    망구스 blog
    미네구스
  • 전체
    오늘
    어제
    • 분류 전체보기 (174)
      • Kotlin (0)
      • 시큐리티 (0)
        • 개발자 유미 (0)
      • 배포 (4)
      • 회고 (0)
      • Algorithm (142)
        • 프로그래머스 코딩테스트 문제풀이전략 (37)
        • 백준 (65)
        • 프로그래머스 (18)
        • Leetcode (22)
        • 코테 팁 (0)
      • 프로젝트 (8)
        • WEPIK (3)
        • PICK-O (5)
      • CS (1)
        • 운영체제 (5)
        • 네트워크 (1)
        • 면접스터디 (2)
      • 면접 (1)
        • 코테후기 (0)
        • 면접후기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    `
    N과 M
    백트래킹
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
미네구스
12/9 풀이
상단으로

티스토리툴바