๐Ÿ“š Study/Baekjoon

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv2 | ์™„์ „ํƒ์ƒ‰ | ์นดํŽซ

์œฐ๊ฐฑ 2025. 10. 11. 03:46

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

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

20260401

ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์—ˆ์Œ

import math
def solution(brown, yellow):
    # ๊ฐ€๋กœ๊ธธ์ด >= ์„ธ๋กœ๊ธธ์ด
    # yellow์˜ ๊ฐ€๋กœ&์„ธ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋ฐ˜๋ณต๋ฌธ -> ์˜ฌ๋ฐ”๋ฅธ brown ์ฐพ๊ธฐ
    
    for i in range(1,int(math.sqrt(yellow))+1):
        if yellow % i == 0:
            yellow_w, yellow_h = yellow//i, i

            cal_brown = (yellow_w+2)*2 + yellow_h*2
            if cal_brown == brown:
                break
    
    return [yellow_w+2, yellow_h+2]

 

 


if yellow % i ์ด ๋ถ€๋ถ„์„ ์•ˆ ์จ์„œ ์ฒ˜์Œ์— ํ‹€๋ ธ์—ˆ์Œ

isqrtํ•˜๋ฉด ์ •์ˆ˜ ์ œ๊ณฑ๊ทผ์„ ๋Œ๋ ค์ค€๋‹ค๋Š” ์‚ฌ์‹ค๋„ ์•Œ๊ฒŒ๋จ. ๊ทธ๋Ÿฌ๋ฉด math.floorํ•  ํ•„์š”๊ฐ€ ์—†์Œ

import math
def expect_brown(xy):
    xx, yy = xy[0], xy[1]
    
    return 2*(xx+2)+2*yy

def return_xy_list(yellow):
    xy_list = []
    for i in range(1, math.isqrt(yellow)+1):
        if yellow % i == 0:
            x = yellow/i; y = i
            xy_list.append([x,y])
    return xy_list
    
def solution(brown, yellow):
    xy_list = return_xy_list(yellow)
    for xy in xy_list:
        if expect_brown(xy) == brown:
            return [xy[0]+2, xy[1]+2]