티스토리 뷰

Python

[프로그래머스] 카펫

up_one 2025. 6. 6. 15:32

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

brown, yellow수로 전체 카펫의 크기 맞추기

  • 노란색 카펫은 항상 갈색 카펫에 둘러싸여 있다
  • 카펫의 가로길이는 세로 길이와 같거나 세로 길이보다 길다

Test Case)

  1. brown = 10 yellow = 2
    • 가로 길이 > 세로 길이이므로 2 X 1 형태의 직사각형으로 노란색 카펫이 존재
    • 그 주위를 둘러싸는 갈색 카펫은 가로 4, 세로 3으로 존재
    • 전체 카펫의 크기는 [4, 3]

Solution)

전체 가로의 길이는 노란색 카펫 가로의 길이 + 2, 전체 세로의 길이는 노란색 카펫 세로의 길이 + 2

주어진 brown의 수 = 노란색 가로 * 2 + 노란색 세로 * 2 + 4

  • yellow 수만큼 반복문을 순회하면서 노란색 가로와 세로를 정하기
  • brown의 수 = 노란색 가로 * 2 + 노란색 세로 * 2 + 4 이 되는 노란색 가로와 세로를 내림차순 해서 반환
def solution(brown, yellow):
    width, height = 0,0
    for i in range(1, yellow+1):
        if yellow%i==0:
            width, height = int(yellow/i), i  #가로, 세로
            
            if width*2+height*2+4==brown:
                answer = [width+2, height+2]
    return sorted(answer, reverse=True)
TAG more
글 보관함
최근에 올라온 글