찬우의 이것저것 Chanwoo's blog

[프로그래머스 python]완전탐색 카펫

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

image.png

brown red return
10 2 [4, 3]
8 1 [3, 3]
24 24 [8, 6]

빨간색 타일의 가로 세로 크기를 구하고 거기에 가로세로를 2칸씩 더해주면 원하는 크기가 된다.

빨간타일의 x, y가 각 6,4 일때 xy의 각각에 2를 더한 8,6에서 brown의 크기만큼을 뺐을때 같은것을 찾아서 풀수있었다.

def solution(brown, red):
    for i in range((red//2)+2):
        for j in range(i+1):
            if i*j == red:
                sq_red=i*j
                sq_brown=(i+2)*(j+2)
                if sq_brown-sq_red == brown:
                    return [i+2,j+2]

급하게 풀고나서 정신차려보니 쓸데없이 반복문을 2중으로 돌렸다. 그냥 나눠떨어져서 몫이 얼만지만 찾으면 되는것을..

def solution(brown, red):

    for i in range(1,(red//2)+2):
        if red%i == 0:
            j=red//i
            sq_red=i*j
            sq_brown=(i+2)*(j+2)
            if sq_brown-sq_red == brown:
                return [j+2,i+2]