일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- core data
- async
- IOS
- Swift
- Linked List
- decode
- Algorithm
- 운영체제
- struct
- 동시성
- 프로세스 스케줄링
- 알고리즘
- 데드락
- SwiftUI
- UserDefaults
- 오브젝트
- Apple Developer Academy
- 상호배제
- @state
- COLOR
- forEach
- 100 days of SwiftUI
- deadlock
- 인프런
- 비동기
- 앨런
- 동기화
- scrollview
- Codable
- 가상 메모리
Archives
- Today
- Total
기어가더라도 제대로
[LeetCode-Swift] 236. Lowest Common Ancestor of a Binary Tree 본문
CS/알고리즘
[LeetCode-Swift] 236. Lowest Common Ancestor of a Binary Tree
Damagucci-juice 2024. 1. 23. 20:00ref. https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/
difficult. medium
time. a day
hint - O
gpt chance - O
Answer - X
목표
루트와 임의의 두 노드 p,q가 주어질 때 p와 q의 최소 공통 조상을 골라내는 문제
처음 전략
- 각 노드의 직전 부모부터 root까지의 모든 계보를 딕셔너리에 수집
- 딕셔너리에서 q,p만 해당하는 것을 배열로 빼냄
- p,q의 선조들 중에서 공통되는 것의 리스트를 골라낸 후
- root에서 가장 거리가 먼 순으로 골라냄
메모리 제한 초과가 떴음
- 그 이유는 모든 노드마다 자기 자신부터 root까지 유전 계보를 모두 저장하다 보니 메모리 제한 초과가 발생
GPT 선생님께 코드를 넘기고 어떤 문제가 있는지 여쭤봄
모든 조상을 수집하지 말고 그 노드의 바로 직전 부모만 조사하라
라고 하셔서 그렇게 코드를 수정
수정된 전략
- 모든 노드들의 바로 직전 부모만 딕셔너리에 수집
- p와 q가 주어지니까 타고 올라가면서 p의 모든 선조를 조사하고, q의 모든 선조를 조사
- 배열의 앞쪽일 수록 Root에서 머니까 p의 선조 배열을 for-loop을 돌리고 당해 노드가 q의 선조 배열에도 존재하면 for-loop을 중단하고 return
- 필연적으로 두 노드의 공통 조상은 root
정답 코드
'CS > 알고리즘' 카테고리의 다른 글
[LeetCode-Swift] 92. Reverse Linked List II (0) | 2023.09.16 |
---|---|
[LeetCode-Swift] 138. Copy List with Random Pointer (0) | 2023.09.16 |
[백준 10986][swift] 나머지합 (0) | 2023.06.23 |
Comments