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 |
'자기개발👨💻 > 코딩 알고리즘' 카테고리의 다른 글
[python] 프로그래머스 2019kakao 오픈채팅방 (0) | 2021.02.21 |
---|---|
[python] 프로그래머스 2019kakao 실패율 (0) | 2021.02.21 |
[python] 백준 10814 나이순 정렬 (0) | 2021.01.31 |
[python] 프로그래머스 모의고사 (0) | 2021.01.07 |
[python] 2018 카카오 비밀지도 (2) | 2021.01.05 |
[python] 문자열 다루기 기본 (예외처리로 해결) (0) | 2021.01.03 |