[Algorithm๐Ÿงฌ] ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•

4441 ๋‹จ์–ด algorithmalgorithm

๋ฌธ์ œ / ํ’€์ด.py

๋ฒ„๋ ค์ง€๋Š” ๋ถ€๋ถ„์ด ๋ช‡๊ฐœ์ธ์ง€๋ฅผ ์ฐพ๋Š”๊ฒŒ ๊ด€๊ฑด
์†”์งํžˆ.. ํ˜ผ์ž ํž˜์œผ๋กœ ์ฐพ์ง€๋Š” ๋ชปํ–ˆ๋‹ค.

์ผ๋‹จ ์ƒ๊ฐ์˜ ํ๋ฆ„๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ฉด,

1. ๋Š‘ ๋ชจ์–‘์ด ๋ฐ˜๋ณต๋˜๋„ค? ๊ทœ์น™์„ฑ์ด ์žˆ๊ธด ํ•˜๊ฒ ๋‹ค.

์‚ผ๊ฐํ˜•์œผ๋กœ ์ƒ๊ฐ์„ ํ•ด๋ดค๋Š”๋ฐ ๊ทธ๊ฑด ํž˜๋“ค์–ด์„œ ์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์™€์„œ ์ƒ๊ฐํ–ˆ๋‹ค.

-> 8, 12 ์ด๋‹ˆ๊นŒ 2, 3 ์œผ๋กœ 4๊ฐœ๊ฐ€ ์ƒ๊ธฐ๊ธด ํ•˜๊ฒ ๊ตฌ๋งŒ
-> 9, 9 ๋ฉด 1, 1 ๋กœ 9๊ฐœ..?


2. ์•„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜!


3. ์•„ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•!!!!!!

def maxDivisor(a, b):
    if b == 0:
        return a
    return maxDivisor(b, a%b)

ํ•˜๊ณ  ์—ฌ๊ธฐ๊นŒ์ง€๋Š” ์ฝ”๋“œ๋ฅผ ์งฐ์Œ.. ๊ทผ๋ฐ ๋ง‰ํ˜”๋‹ค.


4. ์„œ์น˜ํ•ด์„œ ๋ฐœ๊ฒฌํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ทœ์น™์„ฑ์„ ์•Œ์•„๋ƒˆ๋‹ค.

https://taesan94.tistory.com/55


๋Œ€๊ฐ์„ ์ด๋ผ๋Š”๊ฑด ๊ฒฐ๊ตญ ์‹œ์ž‘ ์ง€์ ์—์„œ ๋ ์ง€์ ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒƒ! ๊ทธ๋Ÿฌ๋ ค๋ฉด 5์นธ ์˜†์œผ๋กœ 3์นธ ์œ„๋กœ ๊ฐ€์•ผํ•จ. ๊ทผ๋ฐ ๊ทธ๊ฑธ ์„ ์œผ๋กœ ์›€์ง์ด๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ 1*1 ์ •์‚ฌ๊ฐํ˜• ๋‹จ์œ„๋กœ ์›€์ง์ด๋Š”๊ฑฐ๋‹ˆ๊นŒ ํ•œ์นธ์ด ๊ฒน์น  ์ˆ˜ ๋ฐ–์— ์—†์Œ. ๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ๊ฐ€๋กœ + ์„ธ๋กœ - 1 ์„ ํ•˜๋ฉด ๋œ๋‹ค.

๋Œ€์‹  ์ตœ์†Œ ๋‹จ์œ„(๋„ˆ๋น„ ๋†’์ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ 1์ด ์•„๋‹Œ) ์‚ฌ๊ฐํ˜•์ด ์•„๋‹Œ๋ฐ ์œ„์˜ ๊ณต์‹์„ ์ ์šฉํ•˜๋ฉด, ์ตœ๋Œ€ํ•œ ๊ฒน์น˜๊ฒŒ ํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ์›๋ž˜ ๋‹ต๋ณด๋‹ค ๋” ๋งŽ์ด ๋ฒ„๋ฆฌ๊ฒŒ ๋จ.

def solution(w,h):
    if w < h:
        w, h = h, w
    maxD = maxDivisor(w, h)
    trash = (h / maxD) + (w / maxD) - 1
    return w*h - maxD * trash

์ตœ์ข… ๋‹ต์€ ์ด๋ ‡๊ฒŒ ๋ƒˆ๋‹ค.


def solution(w,h):
    if w < h:
        w, h = h, w
    maxD = maxDivisor(w, h)
    return w*h - (w + h - maxD)

๋‹จ์œ„ ์‚ฌ๊ฐํ˜•์œผ๋กœ ์ชผ๊ฐœ์„œ ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ณฑํ–ˆ๋Š”๋ฐ, ๋’ค์˜ ๊ฒƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์„œ ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ