์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- Codable
- MongoDB
- nodejs
- Filter
- components
- DispatchQueue
- ios
- Decodable
- UIRefreshController
- CRUD
- Mac
- SWiFT
- String.Index
- RxSwift
- ์๊ณ ๋ฆฌ์ฆ
- Figma
- ์ง๋ฒ๋ณํ
- mongoose
- Encodable
- ExpressJS
- Firestore CRUD
- ์ฑ๋ง๋ค๊ธฐ
- Cloud Firestore
- AVAudioPlayer
- Reduce
- Firestore
- ์ฑ๋์์ธ
- map
- ํ๋ก๊ทธ๋๋จธ์ค
- Core Data
- Today
- Total
Focus On Develop ๐ค๐ค
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฒด์ก๋ณต ๋ณธ๋ฌธ
<๋ฌธ์ >
<์ ๋ต์ง๊ธฐ>
์ฐ์ ์ ํ์ฌํญ์ ๋ณด๋ฉด ์ ์ฒด Input์ ์๋ ํฌ์ง ์์์ ์๊ฐ์ด๊ณผ๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋ ๊ฒ ๊ฐ์ง๋ ์๋ค. ๋๋๋นํ ํ์, ์ฌ๋ฒ์ ์ฒด์ก๋ณต์ ๊ฐ์ง ํ์์ด ๊ฐ๊ฐ ๋ฐ๋์ ์กด์ฌํ๋, ์๋ ๊ฒฝ์ฐ์ ๋ํ ํ ์คํธ ์ผ์ด์ค๋ ๋ฐ๋ก ์์ธ์ฒ๋ฆฌํ์ง ์์๋ ๋ ๊ฒ ๊ฐ๋ค. (๋ณดํต ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๋ ํ ์คํธ ์ผ์ด์ค์ ๋๋ถ๋ถ ์กฐ๊ฑด(?) ์์ ์์ธ์ฒ๋ฆฌ ํด์ค์ผ ํ ๋ถ๋ถ์ด ์ข ์ข ์๊ธฐ๋ ๊ฒ ๊ฐ๋ค.)
reserve๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฒ์ด ์๋ ํ์์ด ๋๋๋นํ ํ์(lost)์๊ฒ ๋น๋ ค์ค๋ค๊ณ ์ํฉ์ ๊ฐ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํ ๊ฒ์ด๋ค. ๋จผ์ reserve์ ์๋ ํ์์ด lost์๋ ์๋์ง ์ฒดํฌ (์ฌ๋ฒ์ด ์์ด๋ ๋๋๋นํ์ผ๋ฉด ๋น๋ ค์ค ์ ์๊ธฐ ๋๋ฌธ) ํ๊ณ , ๋ณธ์ธ ์ -> ๋ค ์์๋ก lost์ ํฌํจ๋์ด ์์ผ๋ฉด ๋น๋ ค์ฃผ๊ณ , ๋๋๋นํ ๋ชฉ๋ก์์ ์ง์์ฃผ๋ฉด ๋๊ฒ ๋ค. ์ฌ๊ธฐ์ ๋น๋ ค์ฃผ๋ ์์๋ฅผ ๋ง์ถฐ์ค์ผ ํ๋ ์ด์ ๋, ์๋ฅผ ๋ค์ด์ n = 5, lost = [2, 4], reserve = [3, 5] ๋ผ๊ณ ์ฃผ์ด์ก์๋ ์์๋ฅผ ์งํค์ง ์์ผ๋ฉด 3๋ฒ์ด 4๋ฒ์๊ฒ ๋์ฌ๋ฅผ ํด์ค๋ฒ๋ฆฌ๋ฉด, 5๋ฒ์ด ์์์๋ 4๋ฒ์๊ฒ ๋์ฌ๋ฅผ ํด์ค ์ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค. (+ 2๋ฒ๋ ๋์ฌ๋ฅผ ๋ชป๋ฐ๊ฒ ๋๋ค.)
์ ์ฒดํ์์ - ๋๋๋นํ ํ์์ (lost) + ์ฒด์ก๋ณต์ ๋น๋ฆฐ ํ์์ ๋ก ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐํด๋ณด๋ ค๊ณ ํ๋ค.
<์ฝ๋>
import Foundation
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var result = n - lost.count
var lost = lost.sorted()
var reserve = reserve.sorted()
for item in reserve {
guard lost.count > 0 else { return result }
if lost.contains(item) {
lost = lost.filter { $0 != item }
result += 1
} else if lost.contains(item-1) {
lost = lost.filter { $0 != item-1 }
result += 1
} else if lost.contains(item+1) {
lost = lost.filter { $0 != item+1 }
result += 1
}
}
return result
}
์..? ๊ทธ๋ฐ๋ฐ ๊ฒฐ๊ณผ๊ฐ..? ๋๋์ฒด 5๋ฒ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋ญ๊ธธ๋..?
ํ.. ๊ต์ฅํ ๊ธด์๊ฐ๋์ ์ด๋ฐ ๋น์ฐํ ์์ธ์ผ์ด์ค๋ฅผ ๋ชป์ฐพ์์ ์ฝ์ง์ ํ๋ค ใ ใ ๐ญ ๐ญ ๐ญ ๐ญ ๐ญ
n = 5, lost = [2, 3, 4], reserve = [1, 2, 5] ...... ์ด๋ฐ ์ผ์ด์ค์์๋ 2๋ฒ์ ๋์ฌ๊ฐ ๋ถ๊ฐ๋ฅํด์ผ ํ๋๋ฐ ํด๋ฒ๋ฆฌ๊ฒ ๋๋ค....
if lost.contains(item) {
lost = lost.filter { $0 != item }
result += 1
}
์ด ๋ถ๋ถ์์ ์ฌ๋ฒ์ด ์์ง๋ง ๋๋๋นํ ๊ฒฝ์ฐ๋ฅผ ๋ค ์ก์์ค๊ฑฐ๋ผ๊ณ ์ฝ๊ฒ ์๊ฐํ๋๋ฐ, ์๋์๋ค ใ ใ ;
์ด๋ฐ ํ์์ด ๋ฐ์ํ ์ด์ ๋, reserve๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๋ ค์ค ๋์์ ์ฐพ์ผ๋ ค๊ณ ํด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค. (idea thanks to ์ผ๋๋ ๐ค )
"๋ ์ฌ๋ฒ์ท ์๋๋ฐ ๋ ๋น๋ฆด๋?"๊ฐ ์๋๋ผ.. "๋ ๋๋๋นํ๋๋ฐ ๋ ์ฌ๋ฒ์ท ์๋?" ๋ผ๊ณ ์ ๊ทผํ์ด์ผ ํ๋๋ฐ.. ์ง๊ธ ์๊ฐํด๋ณด๋ฉด ๋น์ฐํ ๊ทธ๋ ๊ฒ ์ ๊ทผ ํ์ด์ผ ํ๋๊ฒ ๋ง๋ค. (ํ์์ผ๋ก ์ด์ ํด์ ์๊ฐํด๋ด๋ ๊ทธ๋ ๋ค ใ ใ ) ์ํผ ๊ธฐ์ค์ด ์๋ชป๋๋ค๊ณ ์๊ฐ์ด ๋ค๊ธด ํ๋๋ฐ, ์ฝ๋ ๊ณ ์น๊ธฐ๊ฐ ๊ท์ฐฎ์์..
์์ ๋๋๋นํ ํ์๊ณผ ์ฌ๋ฒ์ด ์๋ ํ์์ ๋น๊ตํด์ ์ค๋ณต๋๋ ์น๊ตฌ๋ค์ ๋ชจ๋ ๋ ๋ฆฌ๊ณ ์์ํ๋๋ ํต๊ณผ.. ใ ใ ๐
import Foundation
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var realLost = lost.filter { num -> Bool in
return !reserve.contains(num)
}.sorted()
let realReserve = reserve.filter { num -> Bool in
return !lost.contains(num)
}.sorted()
var result = n - realLost.count
for item in realReserve {
guard realLost.count > 0 else { return result }
if realLost.contains(item-1) {
realLost = realLost.filter { $0 != item-1 }
result += 1
} else if realLost.contains(item+1) {
realLost = realLost.filter { $0 != item+1 }
result += 1
}
}
return result
}
<Lessons Learned>
๋ฌธ์ ๋ณด๊ณ ์ ๊ทธ๋ฅ ํ๋ฉด ๋๊ฒ ๋๋ฐ? ์ฌ์ด๋ฐ? ๋ผ๊ณ ์ ๊ทผํ๋๋ฐ..ใ ใ ใ ใ ์ฒ์์ ์ ๋ต์ ์ธ์ธ๋ ๊ธฐ์ค์ ์ก๋ ๊ฒ์ ๋ํด ํ๋ฒ ๋ ์ ์คํ ์๊ฐํด๋ณด๊ณ ํด์ผ๊ฒ ๋ค. ์ด๋ฌ๋ ์ ๋ฌ๋ ๋๊ฐ๊ฒ ์ง ํ๋๋ฐ ์ด๋ ๊ฒ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.. ์๊ฐ์ผ๋ก ์๊ฐํด๋ณผ ๊ฑฐ๋ฆฌ๋ฅผ ์๋ค๊ณ ์น์ ... ๐
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ๋ filter ๋ด์ฉ์ด ๊ถ๊ธํ๋ค๋ฉด? ๐ 2020/12/15 - [iOS/๊ธฐ์ด๋ฅผ ํํํ!] - [Swift] map, filter, reduce
์ถ์ฒ : ํ๋ก๊ทธ๋๋จธ์ค ์ฒด์ก๋ณต
'iOS [Swift] > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] 3์ง๋ฒ ๋ค์ง๊ธฐ (0) | 2020.12.16 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] 2016๋ (0) | 2020.12.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] K๋ฒ์งธ์ (0) | 2020.12.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ชจ์๊ณ ์ฌ (0) | 2020.12.16 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2020.12.15 |