๋ฌธ์ ์ค๋ช
๋ ์์ ์ต์๊ณต๋ฐฐ์(Least Common Multiple)๋ ์ ๋ ฅ๋ ๋ ์์ ๋ฐฐ์ ์ค ๊ณตํต์ด ๋๋ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด 2์ 7์ ์ต์๊ณต๋ฐฐ์๋ 14๊ฐ ๋ฉ๋๋ค. ์ ์๋ฅผ ํ์ฅํด์, n๊ฐ์ ์์ ์ต์๊ณต๋ฐฐ์๋ n ๊ฐ์ ์๋ค์ ๋ฐฐ์ ์ค ๊ณตํต์ด ๋๋ ๊ฐ์ฅ ์์ ์ซ์๊ฐ ๋ฉ๋๋ค. n๊ฐ์ ์ซ์๋ฅผ ๋ด์ ๋ฐฐ์ด arr์ด ์ ๋ ฅ๋์์ ๋ ์ด ์๋ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์กฐ๊ฑด
- arr์ ๊ธธ์ด 1์ด์, 15์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- arr์ ์์๋ 100 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
arr | result |
[2,6,8,14] | 168 |
[1,2,3] | 6 |
๋ด ๋ฌธ์ ํ์ด
import Foundation
func solution(_ arr:[Int]) -> Int {
return arr.reduce(1){LCM($0, $1)}
}
func LCM(_ n:Int, _ m:Int) -> Int {
var gcd = 0
var a = 0
if n > m {
a = n }
else {
a = m }
while a > 0 {
if (n%a == 0 && m%a == 0) {
gcd = a
break
}
else {
a -= 1
}
}
return n*m/gcd
}
- ์ฌ๋ฌ ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ์ฐ์ ๋ ์์ ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ํจ์ LCM์ ์์ฑํ๋ค.
- LCM ํจ์๋ ๋ ์๋ฅผ ์
๋ ฅ ๋ฐ๊ณ , ๋จผ์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํด์ค๋ค.
while๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ ํฐ ์ a๊ฐ 0์ด ๋ ๋๊น์ง 1์ฉ ๋นผ์ฃผ๋ฉฐ
n, m์ ๋๋ ๋ณด๋ค๊ฐ ๋ ์ ๋ชจ๋ ๋๋ ์ง๋ ์๊ฐ while๋ฌธ์ ์ข ๋ฃํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ต๋๊ณต์ฝ์๋ฅผ ์ด์ฉํด ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๋ ๊ณต์์ ์ฌ์ฉํ์ฌ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ค. - solution ํจ์์์๋ reduce๋ฅผ ์ด์ฉํด LCM ํจ์์ arr ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
์ฒ์์ 0๊ณผ ์ต์ ๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ 1๋ก ์ด๊ธฐ๊ฐ์ ์ค์ ํด์ฃผ์๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ์ง ๋ชปํ ๊ฒ ๊ฐ์ ๋์ค์ ๋ค์ ์์ ํด๋ด์ผ๊ฒ ๋ค,,!
๐ [ ์ถ๊ฐ ] 1์ฃผ์ผ ํ ๋ค์ ํ์ด๋ณด๊ธฐ
func solution(_ arr:[Int]) -> Int {
func lcmSolution(_ n1:Int, _ n2:Int) -> Int {
var gcd = n1
while gcd > 0 {
if (n1 % gcd == 0 && n2 % gcd == 0) { break }
else { gcd -= 1 }
}
return n1 * n2 / gcd
}
return arr.sorted().reduce(1){ lcmSolution($0, $1) }
}
- ํจ์ ์์ ํจ์๋ฅผ ์์ฑํด์ฃผ์๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ต๋๊ณต์ฝ์ ๊ตฌํ๋ ๋ก์ง์ ์ฒซ ๋ฒ์งธ ํ์ด์ ๊ฐ๊ณ , ๋ฐฐ์ด์ ์ต์๊ณต๋ฐฐ์ ๊ตฌํ๋ ๋ถ๋ถ์ด ๋ฌ๋ผ์ก๋ค.
- ๋ฐฐ์ด์ ์ ๋ ฌํ์ฌ ๊ตณ์ด ํฐ ์ ์์ ์๋ฅผ ๋ฐ์ง ํ์๊ฐ ์์ด์ก๊ณ , reduce๋ฅผ ์ฌ์ฉํด ํจ์๋ฅผ ์ ์ฉํด์ฃผ์๋ค.
๋ฌธ์
'3๏ธโฃ Swift > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Algorithm] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ Programmers(Lv.2) (0) | 2021.07.08 |
---|---|
[Swift Algorithm] ์ต์๊ฐ ๋ง๋ค๊ธฐ Programmers(Lv.2) (0) | 2021.06.24 |
[Swift Algorithm] ๋ชจ์๊ณ ์ฌ Programmers(Lv.1) (0) | 2021.06.18 |
[Swift Algorithm] K๋ฒ์งธ ์ Programmers(Lv.1) (0) | 2021.06.18 |
[Swift Algorithm] ์์ ๋ง๋ค๊ธฐ Programmers(Lv.1) (0) | 2021.06.18 |
๋๊ธ