문제 설명
이진 트리 모양의 각 노드에 늑대와 양이 한 마리씩 놓여 있고, 이 트리의 루트 노드에서 출발해서 각 노드를 돌아다니며 양을 모으려고 합니다. 각 노드를 방문할 때마다 해당 노드에 있던 양이나 늑대가 나를 따라오는데, 이 때 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 모든 양이 잡아먹힙니다.
최대로 모을 수 있는 양의 수를 구합니다.
- 루트 노드에는 항상 양이 위치
- 잘못된 입력이 주어지는 경우는 X
- 2 <= 노드의 수 <= 17
풀이
첫 번째 풀이
아이디어
노드의 수가 최대 17로 작기 때문에 완전탐색으로 풀이했습니다.
코드 (Java)
결과 (Java)
두 번째 풀이
아이디어
dfs 풀이인데 굳이 부모 노드로 돌아가는 로직을 직접 넣을 필요가 없었습니다. 또한, 아예 다음에 갈 수 있는 노드 목록을 넘겨 불필요한 재귀가 일어나지 않도록 수정했습니다.
코드 (Java)
결과 (Java)
'알고리즘 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 60063 - 블록 이동하기 (Python) (1) | 2022.09.13 |
---|---|
[프로그래머스] 118670 - 행렬과 연산 (Python) (1) | 2022.08.21 |
[프로그래머스] 118669 - 등산코스 정하기 (Python) (3) | 2022.08.19 |
[프로그래머스] 43238 - 입국심사 (Java, Python) (0) | 2022.07.13 |
댓글