Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
brown | yellow | return |
---|---|---|
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
def solution(brown, yellow):
tmp=[]
# 곱해서 yellow를 만족하는 약수를 짝지어 tmp 에 넣어준다.
for i in range(1,yellow+1):
if yellow%i==0:
divisor=sorted([yellow//i,i])
if divisor in tmp:
break
tmp.append(divisor)
# 약수의 합이 brown을 만족하는 애를 answer에 넣어준다.
answer=[]
for i in tmp:
if sum(i)==(brown-4)//2:
answer.extend(i)
# 규칙을 기반해서 가로, 세로를 넣어준다.
result=[]
result.append(answer[1]+2)
result.append((brown+yellow)//result[0])
return result
for i in tmp:
if sum(i)==(brown-4)//2:
answer.extend(i)
def solution(brown, red):
for i in range(1, int(red**(1/2))+1):
if red % i == 0:
if 2*(i + red//i) == brown-4:
return [red//i+2, i+2]
주일에 예배드리고 카페에서 후딱 풀었다!
출처: 프로그래머스
오류가 있으면 댓글 달아주세요🙂