[프로그래머스] 카펫

문제 정보

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 분석

우선 yellow 값을 소인수분해하여 yellow의 약수를 구합니다. (A * B 형태, A < B) 

소인수분해한 각 case에 대하여 brown 값을 구합니다 => (B + 2) * 2 + A * 2

주어진 brown 값과 같은 case의 가로, 세로 크기를 리턴합니다 => [B+2, A+2]

 

풀이 코드


  
def getCase(num):
case = []
for i in range(1, 2000001):
if num // i < i:
return case
if num % i == 0:
case.append([num//i, i])
def solution(brown, yellow):
answer = []
yCase = getCase(yellow)
for y, x in yCase:
if (y+2)*2+x*2 == brown:
answer = [y+2, x+2]
return answer

댓글