[Python] 프로그래머스(Lv2) - 카펫

Kerri·2021년 3월 19일
0

코테

목록 보기
25/67

안녕하세요 :)

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

풀이

안쪽 중앙에 노란색 칠한 부분의 가로 길이를 a, 세로 길이를 b라고 해보겠습니다.
그렇다면 axb 가 문제에서 주어지는 yellow (노란 카펫의 크기) 입니다.
문제에서 주어지는 brwon(브라운 카펫의 크기)는 어떻게 구해질 수 있을까요?
겉을 하나씩으로만 둘러싸고 있기 때문에
brwon = (a+2)x(b+2) – ab = 2a+2b+4 가 됩니다.
이걸 이용하면 a와 b를 이용할 수 있겠죠.

문제에서 가로 길이는 세로 길이와 같거나, 세로 길이 보다 길다고 했기 때문에
a >= b 겠죠. 그럼 for문에서 a는 a+b의 평균값보다 크거나 같은 수 부터 시작하면 됩니다.

def solution(brown, yellow):
    # yellow = a*b
    # brown = (a+2)(b+2) = 2a+2b+4
    brown -= 4
    brown //= 2  # a+b 값    
    
    for a in range(brown // 2, brown):
        b = brown - a
        if a >= b and a * b == yellow:
            return [a + 2, b + 2]

a랑 b가 같은 수인게 답이 될 수도 있죠.
if 문에서 a>=b 이면서 a*b == yellow (ab) 이면
답을 return 해주고 종료하면 됩니다.

profile
안녕하세요 !

0개의 댓글