๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] [์™„์ „ํƒ์ƒ‰] [Python] Level2_์นดํŽซ

Dbswnstjd 2022. 10. 9. 20:06

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

ํ’€์ด

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2๋‹จ๊ณ„ - ์™„์ „ํƒ์ƒ‰ - ์นดํŽซ
def solution(brown, yellow):
    answer = []
    total = brown + yellow
    for weight in range(total, 2, -1):
        if total % weight == 0:
            height = total // weight
            if yellow == (weight-2) * (height-2):
                return [weight, height]

 

์ผ๋‹จ ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๊ณ  ํ• ๋•Œ total ์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ

์ค‘๊ฐ„๋ฐฐ์—ด์˜ ๊ฐ’์„ return ํ•˜๋ฉด ๋ ์ค„ ์•Œ์•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณธ ๊ฒฐ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค.

์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณด์•˜๋Š”๋ฐ 

์นดํŽซ์˜ ๋„“์ด : weight * height

์™ธ๋ถ€ ์‚ฌ๊ฐํ˜•์˜ ๊ฐฏ์ˆ˜(brown) = 2w + 2h - 4 

๋‚ด๋ถ€ ์‚ฌ๊ฐํ˜•์˜ ๊ฐฏ์ˆ˜(yellow) = (w-2) * (h-2)

์—ฌ๊ธฐ์„œ ์ˆ˜ํ•™์ ์œผ๋กœ ์ ‘๊ทผํ•˜์ง€ ์•Š์•„์„œ ์กฐ๊ธˆ ์ƒ๊ฐ์„ ๋งŽ์ด ํ•˜์˜€๋Š”๋ฐ 

brown = 2w + 2h - 4 ์ธ ์ด์œ ๊ฐ€ ๋ชจ์„œ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๊ณ  brown์นดํŽซ์ด yellow์นดํŽซ๋ณด๋‹ค ์œ„ ์•„๋ž˜๋กœ ํ•œ์นธ์”ฉ ๋” ๋งŽ์ด ๋–„๋ฌธ์— 

์œ„์— ๋ธŒ๋ผ์šด ๊ฐ€๋กœ ์นดํŽซ w, ์•„๋ž˜ ๋ธŒ๋ผ์šด ๊ฐ€๋กœ ์นดํŽซ w, ์œ„์— ๋ธŒ๋ผ์šด ์„ธ๋กœ ์นดํŽซ h, ์•„๋ž˜ ๋ธŒ๋ผ์šด ๊ฐ€๋กœ ์นดํŽซ h

์ด๋ ‡๊ฒŒ ๋˜์–ด ๋ชจ์„œ๋ฆฌ๋Š” ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— 4๊ฐœ๋ฅผ ์ œ์™ธํ•˜๋ฉด 2w + 2h -4 ๋ผ๋Š” ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

๋˜ํ•œ yellow ์นดํŽซ์€ brown ์นดํŽซ๋ณด๋‹ค ๊ฐ€๋กœ ์„ธ๋กœ๊ฐ€ 2์นธ์”ฉ ์ ๊ธฐ ๋–„๋ฌธ์— -2๋ฅผ ํ•ด์ค€๋‹ค. 

 total(brown+yellow)์ด weight๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค๋ฉด height๊ฐ€ ๋ชซ์ด ๋  ๊ฒƒ์ด๋‹ค. 

๋”ฐ๋ผ์„œ ๊ทธ ์ˆซ์ž๋“ค์„ ๋น„๊ตํ•ด ๊ฐ€๋ฉด์„œ (w-2) * (h-2) ๊ฐ€ yellow ๊ฐ’์ด ๋œ๋‹ค๋ฉด ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด๋„๋ก ํ•ด์ค€๋‹ค.