코딩테스트

[프로그래머스] 전력망을 둘로 나누기_86971

라임온조 2023. 7. 18. 11:17

문제 및 코드

 

1. 생각

// 생각
    // 트리 형태로 연결되어 있다, 그리고 예시 사진을 보니 dfs 혹은 bfs로 돌면서 확인하면 될 것 같다
    // 시작점에서 연결되어 있는 다른 것들을 다 돌면서 count만 하면 된다 dfs, bfs 딱히 상관 없을 것 같다
    // 저번에 재귀 계속 했으니 이번에는 큐로 구현할 수 있는 bfs를 해보자
// 구현
    // wires를 돌면서 연결리스트를 만든다
    // wires를 돈다
        // 해당 원소의 전선을 끊는다
        // 시작에서 bfs 돈 값과 끝에서 bfs 돈 값의 차이와 현재 answer 중 최솟값이 answer
        // 끊었던 전선을 다시 붙인다
    // bfs

2. 회고

  • 문제 접근법은 떠올리기 쉬웠다.
  • 그리고 bfs도 저번에 복습해서 구현하는데 어려움은 없었다.
  • 그런데 연결리스트를 만들 때 List 형태를 담는 배열을 선언하는 데 있어서 약간의 어려움을 겪었다. 그래서 그 부분을 참고한 게 아쉽다.

 

3. 기억

List<Integer>[] arrList = new List[n+1];
// 제너릭을 사용하여 List의 각 요소가 Integer임을 명시하였다.
// 따라서 for(int n : arrList[i]) 를 사용할 때 컴파일러가 arrList의 각 요소가 Integer임을 알고 있어 오류를 발생시키지 않는다
List[] arrList = new List[n+1];
// 제너릭을 사용하지 않아 List안에 뭐가 들어갈지 모른다
// 따라서 for(int n : arrList[i])를 사용할 때 arrList 안에 있는 요소의 형태를 컴파일러가 몰라서 오류가 난다

 

4. 체크

풀이 횟수 시간 정답 여부 참고 여부
2 1시간   O