로직
red가 n * m 의 직사각형이라고 가정했을 때
-
sum = brown + red = (n+2) * (m+2)
-
brown = 2(n+2) + 2(m+2) - 4
-
red = n*m
위 세 가지 조건을 만족한다
따라서, 식을 정리하여 n*m 과 n+m 두 가지 값을 구한 뒤
for loop으로 1부터 sum//2까지 순회하며,
-
현재 값 * (sum - 현재값) = n * m 이 되는 조합을 찾는다
-
찾게되면 각각 +2 씩을 해준다(n*m는 red에 대한 값이므로)
그리고 큰 수가 앞에오도록 정렬해준뒤 return
코드
def solution(brown, red):
answer = []
sum = brown + red
# red = n*m rect
n_plus_m = brown//2 - 2
n_multi_m = red
print(n_plus_m, n_multi_m)
for i in range(1, (n_plus_m//2)+1):
rest = n_plus_m - i
if i * rest == n_multi_m:
answer = [i+2, rest+2] if i > rest else [rest+2, i+2]
return answer
'코테 준비' 카테고리의 다른 글
[프로그래머스] 가장 긴 팰린드롬 (0) | 2020.09.29 |
---|---|
[프로그래머스] N -Queen (0) | 2020.09.25 |
[프로그래머스] 세 소수의 합 (0) | 2020.09.18 |
[프로그래머스] 빙고 (0) | 2020.09.12 |
[카카오 2020 코테 #1] 문자열 압축 - python (0) | 2020.09.10 |