일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SwiftUI
- scrollview
- 가상 메모리
- 인프런
- 알고리즘
- 동시성
- Codable
- IOS
- async
- @state
- Swift
- Algorithm
- struct
- 상호배제
- COLOR
- 100 days of SwiftUI
- 오브젝트
- deadlock
- core data
- Linked List
- 동기화
- forEach
- decode
- 운영체제
- 데드락
- Apple Developer Academy
- 프로세스 스케줄링
- 앨런
- UserDefaults
- 비동기
- Today
- Total
목록CS/알고리즘 (4)
기어가더라도 제대로
ref. 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 ..
문제 링크드 리스트와 left, right 인덱스가 주어질 때 Left 인덱스 부터 right 인덱스까지를 뒤집은 Linked List를 반환하라. 뒤집는 다는 접근을 어떻게 할지감이 오지 않아서 오래 걸린 문제 -> 결국 답지를 보았다. 풀이 다양한 포인터가 필요할 것 같았는데, 크게는 p, tail, temp가 필요했다. 그리고 그들 사이에 연결을 뒤섞는 순서도 중요했다. 더미 노드와 P 포인터를 선언함 p 포인터를 left-1까지 당겨옴 p의 다음 포인터를 tail로 선언 left-right의 길이 만큼 a,b,c,d 컴비네이션을 적용 a) p의 다음 노드를 tmp로 지정한다. b) p의 다음 노드로 tail의 다음 노드를 지정한다. c) tail.next.next를 tail.next에 저장한다. ..
문제 설명 Random Pointer가 있는 Linked List가 있는데 이를 완전 복사를 해서 새로운 Linked List로 만들라 이것만 보면 쉬운 문제 같은데 문제는 random 포인터 때문에 어려워졌다. 일반적으로 Linked List에서 Node는 Next 포인터 하나가 다음 노드를 가리키고 있다. 이 문제에서는 Random이라는 포인터가 추가로 주어짐 풀이 총 3단계로 풀이를 함 첫번째 while-loop에서 복사를 한 새로운 Node를 기존 링크드리스트 노드들의 사이에 생성한다. 1-1-2-2-3-3-4-4 random: 1→3, 2→4 두번째 while-loop에서 복사한 노드들의 random 포인터를 복사한 노드로 연결한다. 1-1-2-2-3-3-4-4 random: 1→3, 2→4 c..