본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 카펫

728x90

 

나의 풀이

def solution(brown, yellow):
    box = brown + yellow

    for v in range(2, int(box**0.5) + 1):
        if box % v == 0 and v + box/v == (brown + 4) / 2:
            return [int(box/v), v]

 

 

 

근의 공식을 이용한 풀이

import math
def solution(brown, yellow):
    w = ((brown+4)/2 + math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
    h = ((brown+4)/2 - math.sqrt(((brown+4)/2)**2-4*(brown+yellow)))/2
    return [w,h]

 

 

 

완전 탐색을 이용한 풀이

def solution(brown, yellow):
    w = (brown / 2) + 1
    h = 1
    while w >= h:
        if (w - 2) * (h - 2) == yellow:
            return [w, h]
        w -= 1
        h += 1
반응형