์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- binarySearch
- algorithm
- duno
- concurrency
- algoritm
- dfs
- SwiftUI
- SOPT
- ์ด์งํ์
- APPJAM
- URLSession
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- SwiftUI ํํ ๋ฆฌ์ผ
- ๊ณ ๋์ kit
- 0์ด๋์ด์๋๊ธธ
- SwiftUI Tutorials
- Til
- GroupBy
- BFS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- DynamicProgramming
- ํ๋ก๊ทธ๋๋จธ์ค
- HAVIT
- GCD
- ๊ธฐ์ด๋ฌธ๋ฒ
- SQL
- ๋์ ๊ณํ๋ฒ
- Swift
- IOS
- discardableResult
- Today
- Total
suvera-dev ๐ฅฆ
20230331 TIL ๋ณธ๋ฌธ
TIL์ด ์์ฌ์ผ์ผ์ ๋๊ฒจ์ ์ฐธ ๋คํ์ด์์.. ใ ใ
์ค๋ ์ ๋ ์ ์ค์ฆ๋ฉ์ ๋ฌธ๋จ์์ ๋ณด๊ณ ์์
๋ฆ๊ฒ ์ ๋ก๋ํ๋ค์.. ใ
์ฐธ๊ณ ๋ก ์ํ๊ด์์ ๋ณด๋๊ฑฐ ๊ฐ์ถ.. ์ฌ์ด๋.. ์ฐ์ถ.. ๋ง์๋ผ ~~~
๋ฏฟ๊ณ ๋ณด๋ ์ ์นด์ด ๋ง์ฝํ ..
์ง๊ธ๋ OST ๋ค์ผ๋ฉด์ ์ฐ๊ณ ์์ด์ ^^.
1. ์๊ณ ๋ฆฌ์ฆ ํ์ด - ํธ๋ฆฌ
์ฐธ ์ด์ด์๋ ์ฌ๊ฑด ๋ฐ์.. ๋ฐฑ์ค์ ํธ๋ฆฌ ๋ฌธ์ ๊ฐ 2๊ฐ์๋๋ฐ
์ ํด์ง ๋ฌธ์ ๋ง๊ณ ๋ค๋ฅธ ๋ฒํธ ํ์ด๋๊ณ
์ ํ์ด๊ฐ ๋ค๋ฅผ๊น.. ํ์ฐธ ์๊ฐํ์..
์ด์ฉ์ง ์ด์ํ๋๋ผ..
ํ์ด๋ ์๊ฐ๋ณด๋ค ๋ณต์กํด์ก์ง๋ง, ํต๊ณผ๋ ํ์ต๋๋ค. ใ ใ ...
1. ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๋์ ๋๋ฆฌ ์๋ฃํ์ ์ ์ฅํด์ค๋๋ค.
var treeDic: [Int:[Int]] = [:]
for (index,element) in tree.enumerated() {
treeDic[element, default: []] += [index]
}
2. ์ฒ์ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋ถ๋ชจ๋ ธ๋ ์ ๋ณด๋ง ๊ฐ๊ณ ์์ด์, ๋ฆฌํ ๋ ธ๋๋ ๋ฐ๋ก ์ ์ฅ์ ํด์คฌ์ด์.
// ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๋ฆฌํ ๋
ธ๋ ์ถ๊ฐ
for i in 0..<tree.count {
if !Set(treeDic.keys).contains(i) {
// tree์ key์ ํฌํจ๋์ด ์์ง ์์ ๊ฒฝ์ฐ
treeDic[i] = []
}
}
3. ์์ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ ํจ์๋ฅผ ๋ง๋ค์ด์คฌ์ต๋๋ค.
func removeChlidNode(array: [Int]) {
for i in array {
removeChlidNode(array: treeDic[i]!)
treeDic[i] = nil
}
}
4. ๊ทธ๋ฆฌ๊ณ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ ๋ค์ ๊ทธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ถ๋ถ์ ๋์ด์ฃผ๋ ์ฝ๋์ ๋๋ค.
// ๋
ธ๋ ์ ๊ฑฐ ์ํฉ
var leafNode: Int = 0
for (k,v) in treeDic {
if k == deleteNode {
// ๊ทธ key์ ํด๋นํ๋ ๋ฐฐ์ด์ ์๋ ์ ๋ค ๋ค ์ง์์ค
removeChlidNode(array: treeDic[k]!)
treeDic[k] = nil
} else if v.contains(deleteNode) {
let index = v.firstIndex(where: {$0 == deleteNode})!
treeDic[k]?.remove(at: index)
}
}
ํด๋น key์ ๋ค์ด์๋ ์์๋ ธ๋๋ค์ ๋ค ์ง์์ฃผ๊ณ ๊ทธ ์์ ๋ ธ๋๋ค์ ์์๋ค๊น์ง ๋ค ์ง์์ค์ผํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ท๋ก ๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ญ์ ํ๋ ค๋ ๋ ธ๋์ ๋ถ๋ชจ๋ ธ๋์ ์ ๊ทผํด์ ๊ทธ ๋ถ๋ชจ๋ ธ๋์ ๋ฐฐ์ด์์ ์ ๊ฑฐํด์ค๋๋ค.
์ธ๋ฑ์ค๋ฅผ ์ฐพ์์ remove ํด์คฌ๋๋ฐ, ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง ์ฐพ์๋ด์ผ๊ฒ ์ต๋๋ค.
5. ๋ง์ง๋ง์ผ๋ก, ๋ต์ ๊ตฌํด์ฃผ๋ ๋ถ๋ถ์ ๋๋ค.
for i in treeDic {
if i.key == -1 && i.value.isEmpty {
leafNode = 0
break
}
if i.value.isEmpty {
leafNode += 1
}
}
print(leafNode)
- key ๊ฐ -1 ์ผ ๊ฒฝ์ฐ, ๋ฃจํธ ๋ ธ๋์ด๊ณ ๋ฃจํธ ๋ ธ๋์ ๋จ์ ์์์ด ์๋ค๋ฉด, ๋ฆฌํ๋ ธ๋๋ 0์ด ๋ฉ๋๋ค.
- ์ง๊ธ ์ด๊ฑฐ ์ฐ๋ฉด์ ๋ค์ ์๊ฐํด๋ณด๋ ์ ์ด์ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๊ฒ ๋๋ฉด ๊ณ์ฐํ ํ์๋ ์์ด 0์ ๋ฐ๋ก returnํ๊ฒ ๊ฐ์ ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฆฌํ๋ ธ๋๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐ์ด์ด ๋น์ด์๋ ๋ ธ๋๋ค์ ์ฒดํฌํ์ต๋๋ค.
์ ๊ฐ ํผ ํ์ด๋ ์์ ๋ค๋ฅธ ํ์ด๋ ์์์ต๋๋ค.
๋ฐฑ์ค์ ์ ์ถํด์ ๋น๊ตํด๋ณด๋ ์ ์ฝ๋๊ฐ 2๋ฐฐ ์ ๋ ๋น ๋ฅด๋๊ตฐ์ ใ ใ ๊ทธ๋๋ ์ฝ๋๋ ๋ ๊น๋ํ์ด์.
2์ฐจ์ ๋ฐฐ์ด๋ง๊ณ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ทธ๋ฐ๊ฐ ์ถ์ต๋๋ค.
์๊ธฐ ์ ์ ํธ๋ฆฌ ์ํ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํ๋๋ง ๋ ํ๊ณ ์๋ ค๊ณ ํ๋๋ฐ.. ๋ฒ์จ 3์๋ค์ ใ
2. SwiftUI ํํ ๋ฆฌ์ผ ์ฑํฐ 3
ํ๋ฃจ์ ํ๋ ์ ๋ ๊ฐ๋ณ๊ฒ ํ๋๊น ์ฌ๋ฐ์ด์. ์ฐธ๊ณ ๋ก ๋ฒ์ญ์ GPT๊ฐ ๊ธฐ๊น๋๊ฒ ํด์ค๋๋ค.
ํฌ๋กฌ์์ ๊ทธ๋ฅ ๋ฒ์ญ ๋๋ฅด๋ฉด ์์ด ํค์๋๊น์ง ์ ๋ถ ์ด์ํ๊ฒ ๋ฒ์ญ๋๋๊ฑฐ ์์ฃ ..
๊ทผ๋ฐ GPT๋ ์์์ ๋ค ๊ฐ๋ฐ์ฉ์ด๋ ๋ฐ๋ก ๊ตฌ๋ถํด์ ์ค๋ช ํ๋ฏ์ด ๋ฒ์ญํด์ค์.
GPT๋ฅผ ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ ? ์ฑ ? ๋ค์ด ์์ฆ ์ฐธ ๋ง์ ๊ฒ ๊ฐ์์.
์ ๋ ์ ์ฐ๊ณ ์์ง๋ง ๋ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ฉํด๋ณด๊ณ ์ถ์ด์ง๋ค์.
๊ทผ๋ฐ GPT๋ก ์ธํ ์ฌ๋ฌ ์ด์๋ค๋ ์๋๋ผ๊ตฌ์.
์ต๊ทผ์ ์ผ์ฑ์์ ํ ์ง์์ด GPT์ ํ์ฌ ๋ด๋ถ ์์ค ์ฝ๋๋ฅผ ์ ๋ ฅํด์
ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ฌผ์ด๋ณด๋ ๋ฑ์ ๊ธฐ์ ์ ๋ณด ์ ์ถ ์ฌ๊ณ ๊ฐ ์์๋ค๊ณ ํฉ๋๋ค.
์ผ์ฑ์ ์ ์ค๋น ๊ณ์ธก๊ณผ ๊ด๋ จํ ์์ค ์ฝ๋๊ฐ ์คํAI ํ์ต ๋ฐ์ดํฐ๋ก ์ ๋ ฅ๋ ์ ์ด๋ผ
๊ธฐ์ ์ธก์์๋ ๋ค์ GPT ์ฌ์ฉ์ ์ ํํ ์๋ ์๋ค๊ณ ํฉ๋๋ค.
๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ถํน์ ๋ค์์๊ฒ ๋ ธ์ถ ๋ ์๋ ์์ผ๋ ์กฐ์ฌํด์ผ๊ฒ ๋ค์.
3. ๊ฐ์ฒด์งํฅ ๊ฐ๋ - ์ ๊ทผ์ ์ด ์ ๋ฆฌ
์ค๋๋ง์ ์ ๊ทผ์ ์ด์๋ฅผ ๋ณต์ตํ์ด์ !
๋ชจ๋ํ ํ๋ฉด์ ์ ๊ทผ์ ์ด์ ์ค์์ฑ์ ๋๊ผ์๋๋ฐ,
์ต๊ทผ์ ๊ฐ๋ฐ ์ธ์ ์์ private ํค์๋๋ก๋
๋น๋์๊ฐ ๊ฐ์์ ๊ธฐ์ฌํ ์ ์๋ค๋ ๋ด์ฉ์ ๋ดค์๊ฑฐ๋ ์.
์ด์ ๊ด๋ จํด์ Static Dispatch์ Dynamic Dispatch ์ ๋ํ ๋ด์ฉ์ ์ด์ง ์ฝ์ด๋ง ๋ดค์ต๋๋ค. ใ ใ
private ํค์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์ปดํ์ผ๋ฌ๊ฐ ์ ์ฌ๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ํ์ฌ ํ์ผ๋ก ์ ํํ ์ ์๋ค๊ณ ํด์.
ํ์ฌ ํ์ผ์ ๋ํด์๋ง final ํค์๋๋ฅผ ์ถ๋ก ํ๊ณ , ๋ฉ์๋์ ํ๋กํผํฐ ์ ๊ทผ์ ๋ํ ๊ฐ์ ํธ์ถ์ ์ ๊ฑฐํ ์ ์๋ค๊ณ ํฉ๋๋ค.
์ ๋ฆฌํ์๋ฉด, private์ ๊ฐ์ง ํด๋น ์์๋ ํ ๋ธ๋ญ ๋ด์์๋ง ์ฐธ์กฐ๋๋ ๊ฒ์ด ๋ณด์ฅ๋๊ณ
ํ ๋ธ๋ญ๋ด์ ์ค๋ฒ๋ผ์ด๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ด๊ฒ์ Static Dispatch๋ก ์ ๊ทผํฉ๋๋ค.
๋ค์์ Static Dispatch, Dynamic Dispatch์ ๋ํด ๋ ์์ธํ ํฌ์คํ ํด๋ณผ๊ฒ์..
์์ฆ ํ๊ณ ์ถ์ ? ํด์ผํ๋ ? ๊ฒ๋ค์ด ๋๋ฌด ๋ง๋ค์..
๊ทผ๋ฐ ์์์๋ ์จ์ผํ๊ณ .. ์๊ณ ๋ฆฌ์ฆ๋ ํ์ด์ผํ๊ณ ..
๊ทผ๋ฐ ๋๊ธฐ๋ ํด์ผํ๊ณ .. ์ด๋๋ ํด์ผํ๊ณ .. ์๋ฐ๋ ํด์ผํ๊ณ ..
๋ ์จ๋ ์ข์์ ธ์ ๊ดํ ๊ฝ๊ตฌ๊ฒฝ ๊ฐ๊ณ ์ถ๊ณ .. ์ฌํ๋ ๊ฐ๊ณ ์ถ๊ณ ..
์ง์ง ํ๋ฃจ๊ฐ 48์๊ฐ์ด๋ฉด ์ข๊ฒ์จ์..ใ ใ ใ ใ
์ผ๋จ ์กฐ๊ธํดํ์ง ์๊ณ .. ์ฐ์ ์์๋ฅผ ์ ์ ํด์ผ๊ฒ ์ต๋๋ค !
๋ฒ์จ 4์์ด๋ผ๋.. 23๋ ์ 1๋ถ๊ธฐ๊ฐ ๋๋ฌ๋ค๋๊ฒ ๋๋ฌด ์๋ฏฟ๊ธฐ๋ค์.
์๊ฐ์ด ์ค์ผ ๋น ๋ฅธ๊ฑธ๊น์ ????????????? ใ .ใ
๋ค๋ค 4์๋ ํ์ดํ ์ ๋๋ค..
'Private > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
20230402 TIL (0) | 2023.04.02 |
---|---|
20230401 TIL (0) | 2023.04.02 |
20230330 TIL (2) | 2023.03.31 |
20230329 TIL (2) | 2023.03.30 |
20230328 TIL (6) | 2023.03.29 |