프로그래머스 [lv2] 카펫 파이썬

pyhoo·2020년 9월 18일
0

Algorithm

목록 보기
7/11
post-thumbnail

🎄완전 탐색 문제

  • 주어진 brown과 red의 여러 조합에 따라 생성되는 값 중, 위 그림처럼 brown의 테두리가 하나인 조건을 구하면 된다.
  • 즉 여러 조합 중 특정 조건만 필터링 하면 된다는 뜻인데, 이는 곧 여러 조합을 구하기 위해 완전 탐색을 해야한다.

🎨 Code

def solution(brown, red):
    sum = brown + red

    big_set = [(sum // i, i) for i in range(1, sum) if sum % i == 0 ]
    for first, two in big_set:
        if (first - 2) * (two - 2) == red and first >= two:
            return [first, two]

big_set 리스트를 만들 때, sum의 약수를 만드는 것이 관건이다.
first와 second에 각각 -2를 해주었는데, 네 변의 테두리를 각각 1만큼 차지 하고 있기 때문에 제하여 곱해주었다(즉, 이는 red의 넓이임을 알 수 있다).

0개의 댓글