๐ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42862
๐ ์ฒซ๋ฒ์งธ ํ์ด
์๋ฌด๊ฒ๋ ๊ณ ๋ คํ์ง ์์ ์ฑ if ๋ฌธ์ ๊ฐ๊ฒจ์ ๋ฌธ์ ๋ฅผ ํ์๋๋ 3, 5, 7, 12, 24 ๋ค์ฏ ๊ฐ์ ํ ์คํธ์ผ์ด์ค์์ ํ๋ ธ๋ค ใ ํคํคํค ๋ฌธ์ ๋ณด์๋ง์ ๊ทธ๋ฅ if๋ฌธ์ ๊ฐ๊ฒผ๋๋ฐ! ์ญ์๋ ๋ญ ํ๋ ์๊ฐ์ด ๋น ์ง ๊ฒ ๊ฐ๋ค.
๊ฐ์ฅ ๋จผ์ ์๊ฐํ๋๊ฒ์, ๊ทธ๋ฅ ์ ๋ ฅ๋ฐ์ ์ ์ฒด ํ์์๋ฅผ ๊ธฐ์ค์ผ๋ก, lost์ ์กด์ฌํ๋๋ฐ ์ท์ ๋น๋ ค์ค ์ฌ๋์ด ์๋ค๋ฉด -1 ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
โ ํ๋ฆฐ ์ฝ๋
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var total = n
var reserve = reserve
for num in 1...n {
if lost.contains(num) {
if reserve.contains(num-1) {
reserve.remove(at: reserve.firstIndex(of: num-1)!)
} else if reserve.contains(num+1) {
reserve.remove(at: reserve.firstIndex(of: num+1)!)
} else {
total -= 1
}
}
}
return total
}
โ 5๋ฒ 12๋ฒ ํ ์ผ ํ๋ฆผ!!
์,, ์กฐ๊ฑดํ๋๋ฅผ ๋นผ๋จน์๋ค. ์ฒด์ก๋ณต ์ฌ๋ฒ์ ๊ฐ์ง ์น๊ตฌ๊ฐ ์ฒด์ก๋ณต์ ๋๋๋ง์์ ๊ฒฝ์ฐ, ๋ณธ์ธ์ด ๊ทธ๊ฑธ ์ ์ด์ผํด์ ๋์ด์ reserve ๋ฐฐ์ด์ ๋จ์์์ ์ ์๋ค. ์ด๋ถ๋ถ์ ์ฒดํฌํด์ฃผ์ง ์์๋ค. ๋ฐ๋ก ๊ตฌํ ๊ณ ํ์ง๋ง? ํ๋ ธ๊ณ ์?
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var total = n
var lost = lost
var reserve = reserve
for num in 1...n {
if lost.contains(num), reserve.contains(num) {
lost.remove(at: lost.firstIndex(of: num)!)
reserve.remove(at: reserve.firstIndex(of: num)!)
continue
}
if lost.contains(num) {
if reserve.contains(num-1) {
reserve.remove(at: reserve.firstIndex(of: num-1)!)
} else if reserve.contains(num+1) {
reserve.remove(at: reserve.firstIndex(of: num+1)!)
} else {
total -= 1
}
}
}
return total
}
โ ์, ์ธ๋ฒ์งธ ์๋
๋ญ๊ฐ ํ๋ ค!!!!!!!
์ผ๋จ, ๊ฐ์ ์ ๋ค์ ํ๋์ for๋ฌธ ๋ด๋ถ์์ ๋๋ฆฌ๊ฒ๋๋ฉด lost ๊ฐ ใฑใ
์ ๋ณํ๋๊ณ , ๊ฒํ ํ์ง ์์๋ ๋ lost์ ๋ค์ด ์กฐ๊ฑด๋ฌธ์ ํต๊ณผํ๊ฒ ๋๋ค. ๊ทธ๋์ ํ๋์ for๋ฌธ์ ๋๊ฐ๋ก ๋ถ๋ฆฌํด์ ์์ฑํด์ผํ๋ค. ์ฆ
- lostํ ์ ๋ค์ด reserve์ ์์ผ๋ฉด ์ ๊ฑฐํด์ฃผ๋ ์์ ์ด ์ ํ๋๊ณ
- ๊ทธ๋ค์ lost ์ ๋ค์ด ์ฒด์ก๋ณต์ ๋น๋ฆด ์ ์๋ ์ง ํ์ธํด์ผํจ
์ด์์๋๋ก ๊ฐ์ผํ๋ค. ๊ทธ๋๋ ๊ณ์ 13๋ฒ๊ณผ 14๋ฒ ํ ์คํธ์ผ์ด์ค๊ฐ ํ๋ ธ๋ค ใ ใ ใ ใ ์์ค๋นก์ณ! ์ํ๋ฆฌ์ง
์๋ ์์ธ์ฌํญ์ ์ฐพ์๋ค.... for ๋ฃจํ๋ ์์๋๋ก ๋์๊ฐ๊ฒ ๋์ด์๋ค. ๋ง์ฝ, ์ ๋ ฅ๋ฐ๋ ์๋ค์ด ์ ๋ ฌ๋์ด ์์ง ์์ ์ํ๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด, ์ท์ ์ต๋๋ก ๋น๋ ค์ค์ ์๊ฒ ๋๋ค. (์๋ ํ๊ธฐ๋ฅผ ๋ณด์)
์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. lost๋ฅผ [2, 4]๋ก ์ ๋ ฌํ๋ฉด, 3๋ฒ์ด 2์๊ฒ ๋น๋ ค์ฃผ๊ณ , 5๋ฒ์ด 4์๊ฒ ๋น๋ ค์ค ์ ์์ ๊ฒ์ด๋ค. lost๋ฅผ ํ์ํ ๋ 4๋จผ์ ํ์ํ๊ณ , reserve์์ 3์ ๋จผ์ ๊บผ๋ด์์ ์ต๋ ์ธ์์ ๊ตฌํ์ง ๋ชปํ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด์๋ ๊ฐ๋จํ๊ฒ lost ์ reserve๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ฃผ๋ฉด ๋๋ค. ํด ๐จ
๐ ์ ๋ต์ฝ๋
func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int {
var total = n
var lost = lost.sorted(by: <)
var reserve = reserve.sorted(by: <)
for num in lost {
if reserve.contains(num) {
reserve.remove(at: reserve.firstIndex(of: num)!)
lost.remove(at: lost.firstIndex(of: num)!)
}
}
for l in lost {
if reserve.contains(l-1) {
reserve.remove(at: reserve.firstIndex(of: l-1)!)
} else if reserve.contains(l+1) {
reserve.remove(at: reserve.firstIndex(of: l+1)!)
} else {
total -= 1
}
}
return total
}