본문 바로가기

Python/프로그래머스

[프로그래머스] [Python] 카펫

문제 풀이

 

def solution(brown, yellow):
    answer = []

    # 카펫의 전체 크기는 brown + yellow 이다.
    area = brown + yellow

    # yellow가 최소(1)일 때 area는 3 * 3의 크기를 가진다. 이는 width의 최솟값이 3이고, 최댓값이 area / 3이라는 것을 말한다.
    for width in range(int(area / 3), 1, -1):

        # area가 가로 값으로 나누어 떨어지면
        if area % width == 0:

            # 그에 따른 세로 값을 구한 후
            height = area // width

            # yellow는 brown을 테두리로 가진 사각형이다. 상하좌우로 크기를 -1씩 줄인, 즉 (가로-2)*(세로-2)의 크기를 가진 사각형이다. 이를 만족한다면
            if yellow == (width - 2) * (height - 2):
                
                # answer에 가로, 세로 순으로 값을 넣은 후 return
                answer += width, height
                return answer

 

 

 

문제 링크

programmers.co.kr/learn/courses/30/lessons/42842?language=python3

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr