[ํ๋ก๊ทธ๋๋จธ์ค] ์นดํซ
<๋ฌธ์ >
<์ ๋ต์ง๊ธฐ>
์ผ๋จ ์นดํซ ํฌ๊ธฐ๋ฅผ ์ ํ๋ ๊ท์น ํน์, ์๋ฆฌ๋ฅผ ์์๋ด์ผ ํ๋ค. ์ฒ์ ์๋๋ brown ๊ธฐ์ค์ผ๋ก ํฌ๊ธฐ๋ฅผ ์ถ์ ํ๋ ค๊ณ ํด๋ณผ๊น ํ๋๋ฐ.. ์์ 3๋ฒ ์ผ์ด์ค์์ ์? ์ด๊ฑด์๋๊ฒ ๊ตฌ๋ ํ๊ณ ์๊ฐ์ด ๋ค์๋ค ใ ใ ์ฆ.. ์ด๋ฌธ์ ๋ yellow ๋ก๋ถํฐ ํฌ๊ธฐ๋ฅผ ์์๋ด์ผํ๋ค๋ ์๋ฏธ๋ค. ์ง์ฌ๊ฐํ๊ณ yellow์ ํฌ๊ธฐ๊ฐ ์ต์ 1x1์ ๋๋(์ ์ถ๋ ฅ ์ ํ์ฌํญ), yellow์ ํฌ๊ธฐ๋ง ์๋ฉด yellow์ (์์๋๊ธธ์ด + ์ข์ฐ๊ธธ์ด) x 2 + 4(๋์ชฝ๋ชจ์๋ฆฌ) ๋ง ํด์ฃผ๋ฉด brown์ ๊ฐฏ์๋ฅผ ๊ตฌํ ์ ์๋ค. (brown์ yellow๋ฅผ ๊ฐ์ธ๋ ํ ๋๋ฆฌ๋๊น) ๊ด๊ฑด์ yellow์ ํฌ๊ธฐ๋ ์ด๋ป๊ฒ ๊ตฌํ์ง? yellow์ ํฌ๊ธฐ๋ ๊ฐ๋กx์ธ๋ก๋ก ๊ตฌํด์ง ๊ฑด๋ฐ, ๊ฐ๋ฅํ ์กฐํฉ์ ๊ฐ๋กx์ธ๋ก (์ฝ์์ ๊ณฑ) ์ค์ ์์์ ๋์ถํ brown ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ๊ณต์์ ๋ฃ์์๋ ์ ๋ ฅ brown๊ณผ ๋ง์ ๋จ์ด์ง๋ yellow๋ฅผ ์ ํํ ํ์, ๊ฐ๋ก/์ธ๋ก์ ๊ฐ๊ฐ +2์ฉ ๋ํด์ฃผ๋ฉด ์ด ํฌ๊ธฐ๊ฐ ๋๋ค! ์ฌ๊ธฐ์ ๊ฐ๋ฅํ ์กฐํฉ์ ๊ฐ๋ก/์ธ๋ก๋ ์ด๋ป๊ฒ ๊ตฌํ์ง?ใ ใ ์ค์ผ์ด ์์ฌ๋ ์์ ์ผ๋ก ๐ ์ด๋ค ์(A)์ ์ฝ์๋ฅผ ๊ตฌํ ๋๋ A๊ฐ 1๋ถํฐ Root A์ ์ ์๊ฐ(B)๊น์ง ํ์ธํ๋ฉฐ ๋๋์ด ๋จ์ด์ง๋์ง ํ์ธํ๊ณ , ๋๋์ด ๋จ์ด์ง๋ค๋ฉด B๊ฐ๊ณผ ๋ชซ์ A์ ์ฝ์๊ฐ ๋๋ค. Root๊น์ง๋ง ํ์ธํ๋ฉด ๋๋ ๊ฑด ์ค์ค๋ก ๊ณต๋ถํด๋ณด์๊ธธ ๐๐
<์ฝ๋>
import Foundation
func solution(_ brown:Int, _ yellow:Int) -> [Int] {
var res: [Int] = []
for n in 1...Int(sqrt(Double(yellow))) {
if yellow % n == 0 {
let b = yellow / n
if (n+b)*2+4 == brown {
res.append(b+2)
res.append(n+2)
break
}
}
}
return res
}
<Lesson Learned>
์ฌ์ค Swift์ map, filter, reduce๋ฑ์ ์ต์ํด์ง๋ ค๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์์ํ๋๋ฐ.. ๋ด ํ์ด์ ๋๋ถ๋ถ์ C/Java ์คํ์ผ์ด๋ค ๐ญ๐ญ ์ธ์ ์ฏค ๋ ํธํด์ง๊น..? ํํ..ใ ใ ์๋ฌดํผ ์ด๋ฒ ํ์ด๋ ๋ค๋ฅธ์ฌ๋์ ํ์ด์ ๋น๊ตํ์ ๋๋ ๊ฝค๋ ์ ํผ ๊ฒ ๊ฐ๋ค. ๐ ์๋ง sqrt()๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ฝ์๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํ๋ค๋ฉด ์ด์ฉ๋ฉด? ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ์์ง๋.. (yellow์ ์ต๋ ํฌ๊ธฐ๊ฐ 100๋ง..ใ ใ )
์๊ณ ๋ฆฌ์ฆ์์ ์ฌ์ฉ๋ sqrt() ๊ฐ ๊ถ๊ธํ๋ค๋ฉด?? ๐ 2021/01/05 - [iOS [Swift]/๊ธฐ์ด๋ฅผ ํํํ!] - [Swift] ์๊ณ ๋ฆฌ์ฆ ์ฝ๋ฉ์ ์ ์ฉํ Tip๋ค!
์ถ์ : ํ๋ก๊ทธ๋๋จธ์ค ์นดํซ