본문 바로가기

Programming/Programmers

[프로그래머스/Python] 카펫(소인수분해)

brown yellow

24         24

 

1. yellow가 만들어 낼 수 있는 모든 경우의 수를 탐색해야한다.

   -> 소인수분해로 만들 수 있는 사각형 찾아낸다. (1, 24) (2, 12) (3, 8) (4, 6)

2. 각 사각형에 대해서 테두리갯수를 구하고 brown이랑 같으면 그때의 사각형을 sort해서 return

 

 

import math

def get_divisor(num):
    divisors = []
    length = int(math.sqrt(num))+1
    
    for i in range(1,length):
        if num%i == 0:
            a =(i, num//i)
            divisors.append(a)
            
    return divisors
  
def solution(brown, yellow):
    answer = []
    tmp = get_divisor(yellow)
    for i in tmp:
        if (4 + 2*(i[0] + i[1])) == brown:
            answer.append(i[0]+2)
            answer.append(i[1]+2)
    answer=sorted(answer,reverse=True)


    return answer