1. ๋ฌธ์ œ์„ค๋ช…

๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ Wcm, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ Hcm์ธ ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…์ด์—๋Š” ๊ฐ€๋กœ, ์„ธ๋กœ ๋ฐฉํ–ฅ๊ณผ ํ‰ํ–‰ํ•˜๊ฒŒ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ์„ ์ด ๊ทธ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ฒฉ์ž์นธ์€ 1cm x 1cm ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด ์ข…์ด๋ฅผ ๊ฒฉ์ž ์„ ์„ ๋”ฐ๋ผ 1cm ร— 1cm์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ž˜๋ผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด์—ˆ๋Š”๋ฐ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์ข…์ด๋ฅผ ๋Œ€๊ฐ์„  ๊ผญ์ง€์  2๊ฐœ๋ฅผ ์ž‡๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž˜๋ผ ๋†“์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ˜„์žฌ ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ์ง๊ฐ์‚ผ๊ฐํ˜• 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ข…์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์ข…์ด์—์„œ ์›๋ž˜ ์ข…์ด์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๋ฐฉํ–ฅ๊ณผ ํ‰ํ–‰ํ•˜๊ฒŒ 1cm ร— 1cm๋กœ ์ž˜๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.๊ฐ€๋กœ์˜ ๊ธธ์ด W์™€ ์„ธ๋กœ์˜ ๊ธธ์ด H๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

์ž…์ถœ๋ ฅ ์˜ˆ

W H result
8 12 80

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1๊ฐ€๋กœ๊ฐ€ 8, ์„ธ๋กœ๊ฐ€ 12์ธ ์ง์‚ฌ๊ฐํ˜•์„ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ์ž๋ฅด๋ฉด ์ด 16๊ฐœ ์ •์‚ฌ๊ฐํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์ง์‚ฌ๊ฐํ˜•์—์„œ๋Š” 96๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ, 96 - 16 = 80 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-03-11 แ„‹แ…ฉแ„’แ…ฎ 10.40.15.png

2. ๋ฌธ์ œ๋ถ„์„(์‚ฌ์ „)

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-03-11 แ„‹แ…ฉแ„’แ…ฎ 10.40.15.png

// a > b ํฐ ๊ฒฝ์šฐ์ผ๋•Œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” 
// ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(while ์‚ฌ์šฉ)
int temp;
while (a % b != 0) {
	temp = a % b;
	a = b;
	b = temp;
}
// while ๋ฌธ์ด ๋๋‚˜๋ฉด b๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ์„ค์ •

3. JAVA์ฝ”๋“œ

public class Solution {

    // ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LEVEL2 ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜• - 2
    // ๋ฌธ์ œ URL : <https://programmers.co.kr/learn/courses/30/lessons/62048>

    /*
    ๊ฐ€๋กœ : 2, ์„ธ๋กœ : 3
    ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ : 1
    ์‚ฌ์šฉ๋ชปํ•˜๋Š” ์‚ฌ๊ฐํ˜• : ((2/1) + (3/1) - 1)  * 1 = 4
    ์‚ฌ์šฉ๊ฐ€๋Šฅ ์‚ฌ๊ฐํ˜• : 2

    ๊ฐ€๋กœ : 8, ์„ธ๋กœ : 12
    ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ : 4
    ์‚ฌ์šฉ๋ชปํ•˜๋Š” ์‚ฌ๊ฐํ˜• : ((8/4) + (12/4) - 1) * 4 = 16
    ์‚ฌ์šฉ๊ฐ€๋Šฅ ์‚ฌ๊ฐํ˜• : 96 - 16 = 60
    */
    public long solution(int w, int h) {
        long answer = 1;
        int gcp = gcp(Math.max(w, h), Math.min(w, h));
        // answer ๊ฐ’์ด long ์ด๊ธฐ ๋•Œ๋ฌธ์— long ํ˜•ํƒœ๋กœ casting ํ•„์ˆ˜
        Long lGcp = Long.valueOf(gcp);
        Long lw = Long.valueOf(w);
        Long lh = Long.valueOf(h);
        answer = (lw * lh) - (((lw/lGcp) + (lh/lGcp) - 1) * lGcp);
        return answer;
    }

    // ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•(์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ์ถ”์ถœ) --> while ๋ฌธ ์‚ฌ์šฉ
    private int gcp(int a, int b) {
        int temp;
        while (a % b != 0) {
            temp = a % b;
            a = b;
            b = temp;
        }
        return b;
    }

}

4. ์ฝ”๋“œํ•ด์„

<aside> ๐Ÿ”— ์ฐธ์กฐ Github Code

</aside>