[프로그래머스 level2] 카펫

IT공부중·2020년 3월 18일
0

알고리즘

목록 보기
4/49

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

def solution(brown, red):
    answer = []
    temp = brown + red
    #가로길이는 세로 길이와 같거나, 세로길이보다 길다.
    sero = 3
    garo = temp // sero
    
    
    while(garo >= sero):
        if((garo - 2 )* (sero -2) == red):
            answer = [garo, sero]
            break
        garo -=1
        sero = temp // garo
    return answer

가로와 세로를 정해야 하는데 빨간색이 무조건 1개가 있으므로
세로의 길이를 3으로 정한다. 그리고 가로는 갈색과 빨간색 격자를 더한 카펫의 양을 // 3 한것으로 시작한다.

가로가 더 길거나 같다고 했기 때문에 가로가 더 길거나 같을 때까지 반복하고 갈색이 전체를 한 줄로 두르고 있기 때문에 전체 가로 -2, 세로 -2 씩 해준 것을 곱하면 빨간색의 개수가 된다. 빨간색이 됐을 때 answer이고 아닐 때는 가로를 1개씩 줄이면서 계속 계산한다.

profile
4년차 프론트엔드 개발자 문건우입니다.

0개의 댓글