title: "[프로그래머스] 카펫 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/42842"
description: "프로그래머스 Level 2 문제 [카펫]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def divisors(n):
    return [i for i in range(1, n+1) if n % i == 0]

def solution(brown, yellow):
    # 가로를 x, 세로를 y라 하면
    # (x - 2) * (y - 2) = yellow
    # 2 * (x + y) - 4 = brown
    # (x + y) = (brown + 4) // 2
    # xy - 2 * (x + y) = yellow - 4
    xplusy = (brown + 4) // 2
    xy = yellow - 4 + 2 * xplusy
    
    for x in divisors(xy):
        y = xy // x
        if x + y == xplusy:
            return max(x, y), min(x, y)

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges