๐Ÿ”ข[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์œ ํ•œ์†Œ์ˆ˜ ํŒ๋ณ„ํ•˜๊ธฐ

Chobbyยท2022๋…„ 10์›” 18์ผ
2

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
127/345

๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

์†Œ์ˆ˜์  ์•„๋ž˜ ์ˆซ์ž๊ฐ€ ๊ณ„์†๋˜์ง€ ์•Š๊ณ  ์œ ํ•œ๊ฐœ์ธ ์†Œ์ˆ˜๋ฅผ ์œ ํ•œ์†Œ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์ˆ˜๋ฅผ ์†Œ์ˆ˜๋กœ ๊ณ ์น  ๋•Œ ์œ ํ•œ์†Œ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ถ„์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ ํ•œ์†Œ์ˆ˜๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๋ถ„์ˆ˜์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ธฐ์•ฝ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ์„ ๋•Œ, ๋ถ„๋ชจ์˜ ์†Œ์ธ์ˆ˜๊ฐ€ 2์™€ 5๋งŒ ์กด์žฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‘ ์ •์ˆ˜ a์™€ b๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, a/b๊ฐ€ ์œ ํ•œ์†Œ์ˆ˜์ด๋ฉด 1์„, ๋ฌดํ•œ์†Œ์ˆ˜๋ผ๋ฉด 2๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • a, b๋Š” ์ •์ˆ˜
  • 0 < a โ‰ค 1,000
  • 0 < b โ‰ค 1,000

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

abresult
7201
11221
12212

๐Ÿ’™์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ถ„์ˆ˜ 7/20์€ ๊ธฐ์•ฝ๋ถ„์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ชจ 20์˜ ์†Œ์ธ์ˆ˜๊ฐ€ 2, 5 ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ํ•œ์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋ถ„์ˆ˜ 11/22๋Š” ๊ธฐ์•ฝ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 1/2 ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ชจ 2๋Š” ์†Œ์ธ์ˆ˜๊ฐ€ 2 ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ ํ•œ์†Œ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • ๋ถ„์ˆ˜ 12/21๋Š” ๊ธฐ์•ฝ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด 4/7 ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ชจ 7์€ ์†Œ์ธ์ˆ˜๊ฐ€ 7 ์ด๋ฏ€๋กœ ๋ฌดํ•œ์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’œHint

๋ถ„์ž์™€ ๋ถ„๋ชจ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ์•ฝ๋ถ„ํ•˜๋ฉด ๊ธฐ์•ฝ๋ถ„์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ •์ˆ˜๋„ ์œ ํ•œ์†Œ์ˆ˜๋กœ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค.


๐ŸคŽ๋‚˜์˜ ํ’€์ด

function solution(a, b) {
    if(a%b === 0) return 1
    const max = Math.max(a,b)
    let commonFactor = 1
    const prime = []
    // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    for(let i = 2 ; i <= (max/2)<<0; i++) {
        if(a%i === 0 && b%i === 0) commonFactor=i
    }
    // ์•ฝ์ˆ˜ 
    for(let i = 2; i <= b/commonFactor ; i++) {
        (b/commonFactor)%i === 0 ? prime.push(i) : null 
    }
    return primeList(prime).filter(a => a !== 2 && a !== 5).length ? 2 : 1
}
// ์†Œ์ธ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
function primeList(num) {
    const list = []
    let flag = true
    for(let i = 0 ; i < num.length ; i ++) {
        for(let j = 2 ; j < num[i]; j++) {
            // ์†Œ์ธ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด
            if(num[i]%j === 0) {
                flag = false
                break
            }
        }
        if(flag) list.push(num[i])
    }
    
    return list
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

0๊ฐœ์˜ ๋Œ“๊ธ€