자기개발👨💻/코딩 알고리즘
[python] 프로그래머스 카펫
천숭이
2021. 1. 7. 22:44
def solution(brown, yellow):
answer = []
if yellow==1 and brown == 8:
answer=[3,3]
else:
for i in range(1,yellow):
if yellow %i==0:
m=i
n=int(yellow /i)
isbrown=2*m+(n+2)*2
if isbrown == brown:
answer = [max(n+2,m+2),min(n+2,m+2)]
return answer
yellow가 1일때의 경우는 답이 한가지밖에 없기때문에 answer을 정해준다
만약 yellow가 1이 아닌 나머지의 경우에는
for문을 사용해 yellow가 i로 나누어진다면 그때 i가 가로세로 중 하나의 길이가 되고
yellow를 i로 나누어 정수화한 것은 그 나머지가 된다.
정해진 가로세로의 값을 이용해 바깥을 둘러싸는 brown의 값을 유추해 볼 수 있다.
이때 유추한 값과 인자로 넘어온 brown의 값이 같으면 answer값을 반환한다
n과 m에 2를 더한 이유는 바깥 brown영역이 한줄씩 감싸져 있기 때문
B | B | B | B |
B | Y | Y | B |
B | Y | Y | B |
B | B | B | B |