๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•(62048)

๋ฌธ์ œ๋งํฌ

 

if(w > h){
    answer = w*h-((Math.ceil(w/h)) * h)
}else if(h > w){
    answer = w*h-((Math.ceil(h/w)) * w)
}else{
    answer = w*h-w
}

ํ•˜์ง€๋งŒ ๊ธฐ์šธ๊ธฐ์— ๋”ฐ๋ผ์„œ 2,3,2,3,2,3 ์ด๋Ÿฐ์‹์œผ๋กœ ์„ ๊ณผ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•ด์„œ ๋‹ค์‹œ ์ ‘๊ทผํ•˜์˜€๋‹ค.




์ฃผ์–ด์ง„ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ํฐ ๋ถ€๋ถ„์˜ ํŒจํ„ด์„ ํŒŒ์•…ํ•˜๋ฉด
3 * 7 ๊ทธ๋ฆผ์€ 9๊ฐœ
4 * 7 ๊ทธ๋ฆผ์€ 10๊ฐœ
5 * 7 ๊ทธ๋ฆผ์€ 11๊ฐœ
6 * 7 ๊ทธ๋ฆผ์€ 12๊ฐœ
๋‹ค๋“ค ๋„“์ด + ๋†’์ด - 1์ด๋‹ค.

์ข€ ๋” ๋‹ค๋ฅธ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด
3 * 6 ๊ทธ๋ฆผ์€ 6๊ฐœ
4 * 6 ๊ทธ๋ฆผ์€ 8๊ฐœ
์ด๋“ค์€ ๊ฐ๊ฐ ์•„๋ž˜์˜ ํŒจํ„ด์„ ๊ฐ–๋Š”๋‹ค.
๋†’์ด + ๋„“์ด - 3
๋†’์ด + ๋„“์ด - 2 
๋˜ํ•œ ์ด๋“ค์€ ์ ๊ณผ ์ ์ด ์—ฐ๊ฒฐ๋œ ๊ตฌ๊ฐ„์ด ์กด์žฌํ•œ๋‹ค. => ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๋ถ€๋ถ„์ด ์žˆ์Œ

๊ฒฐ๋ก ์ ์œผ๋กœ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜(์ ๊ณผ ์ ์ด ๋งŒ๋‚˜๋Š” ๋ธ”๋ก์˜ ๊ฐœ์ˆ˜)๋ฅผ ๊ตฌํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€ป ํฐ์นธ์˜ ๊ฐœ์ˆ˜ : w + h - (์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜)

 

function solution(w, h) {
    let answer = 1;
    const gcd = getGCD(w, h);
    answer = w * h - (w+h-gcd);
    return answer
}

function getGCD(w, h) {
    const mod = w % h;
    
    return mod === 0 ? h : getGCD(h,mod);
}