프로그래머스

프로그래머스 카펫 파이썬

hotchya 2021. 9. 11. 01:18

카펫

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

문제 단순화

  • brown, yellow 두 정수가 있다.
  • yellow는 직사각형을 이루는 격자의 갯수이고, brown은 해당 직사각형을 감싸는 격자의 갯수이다.
  • 감싸는 격자의 가로, 세로의 크기를 리턴한다.

문제풀이

    yellow = h * w 이라 했을 때, 
    brown   = (h+2)*2 + (w+2)*2 - 4 
            = h*2 + 4 + w*2 + 4 - 4
            = h*2 + w*2 + 4
    brown-4 = h*2 + w*2
    (brown-4)/2 = h + w

    h + w = (brown-4)/2, h * w = yellow를 만족하는 h, w를 구한다.
    [w+2, h+2]를 리턴한다. 단, w+2 >= h+2

코드

def solution(brown, yellow):
    sum_hw = (brown-4)//2
    product_hw = yellow
    for h in range(1,sum_hw):
        w = sum_hw-h
        if h*w == product_hw:
            answer = [w+2, h+2]
            break
    return answer