Skip to content

Conversation

@0224LJH
Copy link
Contributor

@0224LJH 0224LJH commented Oct 25, 2025

🧷 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/133500

🧭 풀이 시간

30분

👀 체감 난이도

✏️ 문제 설명

인천 앞바다에는 1부터 n까지 서로 다른 번호가 매겨진 등대 n개가 존재합니다. 등대와 등대 사이를 오가는 뱃길이 n-1개 존재하여, 어느 등대에서 출발해도 다른 모든 등대까지 이동할 수 있습니다. 등대 관리자 윤성이는 전력을 아끼기 위하여, 이 중 몇 개의 등대만 켜 두려고 합니다. 하지만 등대를 아무렇게나 꺼버리면, 뱃길을 오가는 배들이 위험할 수 있습니다. 한 뱃길의 양쪽 끝 등대 중 적어도 하나는 켜져 있도록 등대를 켜 두어야 합니다.

예를 들어, 아래 그림과 같이 등대 8개와 7개의 뱃길들이 있다고 합시다. 이 경우 1번 등대와 5번 등대 두 개만 켜 두어도 모든 뱃길은 양쪽 끝 등대 중 하나가 켜져 있으므로, 배들은 안전하게 운항할 수 있습니다.

등대의 개수 n과 각 뱃길이 연결된 등대의 번호를 담은 이차원 배열 lighthouse가 매개변수로 주어집니다. 윤성이가 켜 두어야 하는 등대 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.

🔍 풀이 방법

트리를 만든 후, 무조건 리프노드는 불이 안켜진다는 그리디한 접근법으로 진행하였다. 이후 중간노드에서는 하나라도 안켜진 자식노드가 있으면 무조건 불을 키는 식으로 로직을 구성하였다.

⏳ 회고

@0224LJH 0224LJH added the success 👍 해설을 보지 않고 풀었을 때 label Oct 25, 2025
@ShinHeeEul ShinHeeEul merged commit aca3c0c into main Oct 25, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants