๐ ์ฝ๋ฉํ ์คํธ
โ๐ป Github
๋ฌธ์ ์ค๋ช
์ ์ฌ์๊ฐ์ ๋๋์ด ๋ค์ด, ์ผ๋ถ ํ์์ด ์ฒด์ก๋ณต์ ๋๋๋นํ์ต๋๋ค. ๋คํํ ์ฌ๋ฒ ์ฒด์ก๋ณต์ด ์๋ ํ์์ด ์ด๋ค์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๋ ค ํฉ๋๋ค. ํ์๋ค์ ๋ฒํธ๋ ์ฒด๊ฒฉ ์์ผ๋ก ๋งค๊ฒจ์ ธ ์์ด, ๋ฐ๋ก ์๋ฒํธ์ ํ์์ด๋ ๋ฐ๋ก ๋ท๋ฒํธ์ ํ์์๊ฒ๋ง ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 4๋ฒ ํ์์ 3๋ฒ ํ์์ด๋ 5๋ฒ ํ์์๊ฒ๋ง ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์์ต๋๋ค. ์ฒด์ก๋ณต์ด ์์ผ๋ฉด ์์ ์ ๋ค์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฒด์ก๋ณต์ ์ ์ ํ ๋น๋ ค ์ต๋ํ ๋ง์ ํ์์ด ์ฒด์ก์์ ์ ๋ค์ด์ผ ํฉ๋๋ค.
์ ์ฒด ํ์์ ์ n, ์ฒด์ก๋ณต์ ๋๋๋นํ ํ์๋ค์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด lost, ์ฌ๋ฒ์ ์ฒด์ก๋ณต์ ๊ฐ์ ธ์จ ํ์๋ค์ ๋ฒํธ๊ฐ ๋ด๊ธด ๋ฐฐ์ด reserve๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ฒด์ก์์ ์ ๋ค์ ์ ์๋ ํ์์ ์ต๋๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
- ์ ์ฒด ํ์์ ์๋ 2๋ช ์ด์ 30๋ช ์ดํ์ ๋๋ค.
- ์ฒด์ก๋ณต์ ๋๋๋นํ ํ์์ ์๋ 1๋ช ์ด์ n๋ช ์ดํ์ด๊ณ ์ค๋ณต๋๋ ๋ฒํธ๋ ์์ต๋๋ค.
- ์ฌ๋ฒ์ ์ฒด์ก๋ณต์ ๊ฐ์ ธ์จ ํ์์ ์๋ 1๋ช ์ด์ n๋ช ์ดํ์ด๊ณ ์ค๋ณต๋๋ ๋ฒํธ๋ ์์ต๋๋ค.
- ์ฌ๋ฒ ์ฒด์ก๋ณต์ด ์๋ ํ์๋ง ๋ค๋ฅธ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์์ต๋๋ค.
- ์ฌ๋ฒ ์ฒด์ก๋ณต์ ๊ฐ์ ธ์จ ํ์์ด ์ฒด์ก๋ณต์ ๋๋๋นํ์ ์ ์์ต๋๋ค. ์ด๋ ์ด ํ์์ ์ฒด์ก๋ณต์ ํ๋๋ง ๋๋๋นํ๋ค๊ณ ๊ฐ์ ํ๋ฉฐ, ๋จ์ ์ฒด์ก๋ณต์ด ํ๋์ด๊ธฐ์ ๋ค๋ฅธ ํ์์๊ฒ๋ ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
n | lost | reserve | return |
5 | [2, 4] | [1, 3, 5] | 5 |
5 | [2, 4] | [3] | 4 |
3 | [3] | [1] | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
1๋ฒ ํ์์ด 2๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๊ณ , 3๋ฒ ํ์์ด๋ 5๋ฒ ํ์์ด 4๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๋ฉด ํ์ 5๋ช ์ด ์ฒด์ก์์ ์ ๋ค์ ์ ์์ต๋๋ค.
์์ #2
3๋ฒ ํ์์ด 2๋ฒ ํ์์ด๋ 4๋ฒ ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๋ฉด ํ์ 4๋ช ์ด ์ฒด์ก์์ ์ ๋ค์ ์ ์์ต๋๋ค.
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var reserve = reserve.sorted()
var lost = lost.sorted()
// ์ฒด์ก๋ณต์ด ์๋ ํ์๋ค ์นด์ดํธ
var count = lost.count
// lost์ reserve์ ์ค๋ณต๊ฐ ์ฐพ๊ธฐ
for (i, num) in lost.enumerated() {
if reserve.contains(num) {
count -= 1
lost[i] = -1
reserve[reserve.firstIndex(of: num)!] = -1
continue
}
}
for num in lost {
if num == -1 {
continue
}
if reserve.contains(num-1) {
count -= 1
reserve[reserve.firstIndex(of: num-1)!] = -1
continue
}
if reserve.contains(num+1) {
count -= 1
reserve[reserve.firstIndex(of: num+1)!] = -1
continue
}
}
return n - count
}
swift๋ก๋ ์ฒ์์ผ๋ก ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํ์๋ค.
๊ทธ๋ฆฌ๋๋?
ํ์ฌ ์ํฉ์์ ์ง๊ธ ๋น์ฅ ์ข์ ๊ฒ๋ง ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ
ํ์ด ๋ฐฉ๋ฒ์ ๋ํด์ ์ดํด๋ณด์.
์ฒ์์ ์๊ฐํ ๋ถ๋ถ์ ‘์ ์ฒด ์น๊ตฌ๋ค์ ์์์ ์ฒด์ก๋ณต์ ์ ์ง ๋ชปํ๋ ์น๊ตฌ๋ค์ ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋๊ฒ ๋ค.’์๋ค.
์ฒด์ก๋ณต์ ์ ์ง ๋ชปํ๋ ์น๊ตฌ๋ค์ ์ซ์๋ฅผ ํค์๋ฆฌ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ณด๋ค๊ฐ.
reserve๋ฅผ for๋ฌธ์ผ๋ก ๋๋ ๊ฒ์ด ์๋,
lost๋ฅผ for๋ฌธ์ผ๋ก ํ์ํ๋ฉฐ, ์ด ํ์์๊ฒ ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์๋์ง ์๋์ง๋ฅผ ํ์ ํ๊ธฐ๋ก ํ๋ค.
๊ทธ๋ ๊ฒ ์๋ฒฝํ๋ค๊ณ ์๊ฐํ์ผ๋
ใ .. 8์ 8๋ถ๋ถํฐ ์์๋๋ ์ค๋ต ํ๋ ฌ ๋ณด์ด์๋์..?
์ ๊ฐ ๋์ณค๋ ๋ถ๋ถ์ ๋ฑ ๋ ๊ฐ์ง์์ต๋๋ค.
์ฒซ ๋ฒ์งธ, “ ์ฌ๋ฒ ์ฒด์ก๋ณต์ ๊ฐ์ ธ์จ ํ์์ด ์ฒด์ก๋ณต์ ๋๋๋นํ์ ์ ์์ต๋๋ค. ์ด๋ ์ด ํ์์ ์ฒด์ก๋ณต์ ํ๋๋ง ๋๋๋นํ๋ค๊ณ ๊ฐ์ ํ๋ฉฐ, ๋จ์ ์ฒด์ก๋ณต์ด ํ๋์ด๊ธฐ์ ๋ค๋ฅธ ํ์์๊ฒ๋ ์ฒด์ก๋ณต์ ๋น๋ ค์ค ์ ์์ต๋๋ค. “
๋ ๋ฒ์งธ, reserve์ lost๋ ์ ๋ ฌ๋์ด ์์ง ์๋ค..!
์ฌ๋ฒ ์ฒด์ก๋ณต์ ๊ฐ์ ธ์จ ํ์์ด ๋๋๋นํ๋ค๋ ๊ฑด์ lost์ reserve ๋ฐฐ์ด์ ์ค๋ณต๋๋ ์ซ์๊ฐ ์กด์ฌํ๋ค์์ด์
์ด ๋ถ๋ถ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๋ ๋ฐ๋ณต๋ฌธ์ ๋๋ ธ์ต๋๋ค.
๋ค๋ฅธ ๋ถ๋ค ์ค์ ์ด๋ ๊ฒ ๋๋ํ๊ฒ filterํจ์๋ฅผ ์ด์ฉํด ํธ์ ๋ถ์ด ์๋๋ผ๊ณ ์!
let newReserve = reserve.filter { !lost.contains($0) }
let newLost = lost.filter { !reserve.contains($0) }
๊ทผ๋ฐ, ์ด๋ฌ๋ฉด lost๋ reserve ๋ ๋ฒ๋๋ฆฌ๋ ๊ฑฐ๋ผ ์๊ฐ์ ๋น์ทํ ๋ฏํ๋ค์!
์ ๋ ฌ์ด ๋์ด์์ง ์์ ๋ถ๋ถ์ ์ด์ ์ ๋ฆฌํ sort์ sorted ๊ฐ๋ ์ ๋ฐํ์ผ๋ก ์ ๋ ฌ์์ผ ์ฃผ์์ต๋๋ค.