[프로그래머스] 카펫

박정훈·2022년 2월 16일
0

코테 문제 모음

목록 보기
15/34

프로그래머스 카펫
넘겨받은 brown과 yellow를 더하면 총 면적이다.
height의 최소는 3이다. 그리고 width 보다 같거나 작다.
총 면적을 height로 나눈게 딱 떨어질때만 계산해 보면 된다.
따라서 width는 total // height 인게 당연하므로,
2width + 2height -4 == brown 인지만 체크 하면된다. brown은 테두리 부분만 가져가므로, 위아래, 오른쪽, 왼쪽과 겹치는 모서리 4칸을 빼주면 된다.

def solution(brown, yellow):
    answer = []
    total = brown + yellow
    for height in range(3, (total // 2) + 1):  # 굳이 total//2 + 1 안해도 된다. 끝까지 가기 전에 답이 나오니까
        if total % height == 0:
            width = total // height
            if width >= height: # 얘는 없어도 된다. width를 최소치부터 올렸으니까
                if 2 * width + 2 * height - 4 == brown:
                    return [width, height]
    return answer
profile
그냥 개인적으로 공부한 글들에 불과

0개의 댓글