μ΅λ곡μ½μμ μ΅μ곡배μ
μμΈμ²λ¦¬(Try-Catch-Finally / Throw)
// μ΅λ곡μ½μλ₯Ό ꡬν μ μλ 곡μ,μ΅λ곡μ½μλ₯Ό ꡬνκΈ° μν μκ³ λ¦¬μ¦ (=곡μ)
// aλ₯Ό bλ‘ λλ΄μ λ(aκ° bλ³΄λ€ ν΄ κ²½μ°) === ν°μμμ μμ μλ₯Ό λλ΄μ λ
// λλ¨Έμ§ κ°μ΄ 0μ΄ λλ©΄, μμ μ(b)κ° μ΅λ곡μ½μ
// λλ¨Έμ§ κ°μ΄ 0μ΄ μλλΌλ©΄, μμ μ(b)κ° ν° μ(a)κ° λλ€.
// λλ¨Έμ§ κ°μ μμ μ(b)κ° λλ€.
// λλ¨Έμ§ κ°μ΄ λμ¬ λκΉμ§ μμ κ³Όμ μ λ°λ³΅
function solution( n,m ){
let a = Math.max( n,m ) // ν° μ
let b = Math.min( n,m ) // μμ μ
let r = 0 // aλ₯Ό bλ‘ λλ΄μ λ λλ¨Έμ§ κ°μ μ μ₯
while ( a % b > 0 ) {
r = a % b
a = b // ν° μμ μμ μλ₯Ό ν λΉ
b = r // μμ μμ λλ¨Έμ§ κ°μ ν λΉ
}
// μ΅μ곡배μλ λ μλ₯Ό κ³±ν κ°μ μ΅λ곡μ½μλ₯Ό λλ κ°
return [ b, ( n * m ) / b]
}
function gcd (a,b){
const reminder = a % b // 1. ν° μλ₯Ό μμ μλ‘ λλ
if (reminder === 0 ) return b // 2. λλ λ€ λλ¨Έμ§κ° 0μ΄λ©΄ μμ μ(b)κ° μ΅λ곡μ½μ
return gcd(b, reminder) // 3. λλ¨Έμ§κ° 0μ΄ μλλ©΄ μμ μλ₯Ό λ€μ λλ¨Έμ§λ‘ λλ
// 4. λλ¨Έμ§κ° 0μ΄ λ λκΉμ§ λ°λ³΅^^
}
// λ μλ₯Ό μ
λ ₯λ°μ λ μμ μ΅λ곡μ½μμ μ΅μ곡배μλ₯Ό λ°ννλ ν¨μ, solutionμ μμ±ν΄ 보μΈμ.
// λ°°μ΄μ 맨 μμ μ΅λ곡μ½μ, κ·Έλ€μ μ΅μ곡배μλ₯Ό λ£μ΄ λ°ννλ©΄ λ©λλ€.
// μ΅λ곡μ½μ: λ μμ 곡ν΅λ μ½μ μ€μμ μ μΌ ν° μ
// μ΅μ곡배μ: λ μμ 곡ν΅λ λ°°μ μ€μμ μ μΌ μμ μ
// μλ₯Ό λ€μ΄ λ μ 3, 12μ μ΅λ곡μ½μλ 3, μ΅μ곡배μλ 12μ΄λ―λ‘
// solution(3, 12)λ [3, 12]λ₯Ό λ°νν΄μΌ ν©λλ€.
// forλ¬Έ μ΄μ©
function solution(n,m){
let max = 0
let min = 0
let bigNum = Math.max(n,m)
let smallNum = Math.min(n,m)
// μ΅λ곡μ½μ ꡬνκΈ°
// λ°λ³΅λ¬Έ μ¬μ©
// μ«μ 1λΆν° n,m μμ μ μΌ ν° κ°μ κ°μ Έμμ κ°μ Έμ¨ μ«μλ€μ λκ°λ‘ λλ΄μλ λλ μ§λμ§ νμΈ
for( let i = 1 ; i <= bigNum ; i++ ){
if (n % i === 0 && m % i === 0){
max = i
}
}
// μ΅μ곡배μ ꡬνκΈ°
for ( let i = bigNum ; i<= n * m ; i+=bigNum ){
if ( i % smallNum ===0 ){
min = i // μ΅μ΄λ‘ λ½μμ€λ κ°λ§ λ½μμ€κ³ break
break
}
}
return [max, min]
}
<aside>
π₯ 볡μ΅!
service (ν΅μ¬μ μΈ λͺ¨λ, μλΉμ€ λΆλΆ)
β resolver (container, api λͺ¨μ, serviceμμ κ°μ Έμ΄)
β module μμ λ€κ°μ΄ μλ!
β app.module.ts
β main.ts
</aside>
@Module()
, @Resolver()
, @Injectable()
(service)import
, providers
κΈ°μ¬