반응형
https://leetcode.com/problems/distribute-coins-in-binary-tree/
1. 2022.02.20 시도
소요시간: 76분(36분 구상, 40분 풀이)
class Solution {
public int distributeCoins(TreeNode root) {
return traverse(root);
}
private int traverse(TreeNode root) {
int left = 0;
int leftv = 0;
if (root.left != null) {
left = traverse(root.left);
leftv = root.left.val;
}
int right = 0;
int rightv = 0;
if (root.right != null) {
right = traverse(root.right);
rightv = root.right.val;
}
root.val = (root.val - 1) + leftv + rightv;
return Math.abs(leftv) + Math.abs(rightv) + left + right;
}
}
풀이 접근 과정
일단 거리와 코인을 구분해야겠다는 생각을 했다.
거리는 리턴값으로 넘겨주고 코인 갯수는 노드의 val로 표현하였다.
느낀점
- 코인과 거리를 구분하는 작업을 개념적으로는 간단했는데 코드로 풀자 꼬이기 시작했다. 특히 아래가 0인 노드인 경우, 보통 코인과 거리가 비슷하기때문에 엄청 헷갈린다.
- 나의 원리는 노드를 간단하게 하는데 있다. 노드에 저장되는 수는 실제 노드 수와 관계없고 앞으로 움직임을 계산하는데 쓰인다.
- 글로 설명해보려니 좀 어렵긴한데 말로 설명하는 것까지는 가능하다.
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(662. Maximum Width of Binary Tree) (0) | 2022.03.01 |
---|---|
.leetcode(958. Check Completeness of a Binary Tree) (0) | 2022.02.22 |
.leetcode(965. Univalued Binary Tree) (0) | 2022.02.20 |
.leetcode(938. Range Sum of BST) (0) | 2022.02.20 |
.leetcode(86. Partition List) (0) | 2022.02.06 |