기록

[programmers/python] 카펫 - 완전탐색 본문

코딩테스트/python

[programmers/python] 카펫 - 완전탐색

zyin 2025. 5. 22. 08:49

- url :  https://school.programmers.co.kr/learn/courses/30/lessons/42842?language=python3

 

Leo는 갈색 테두리와 노란색 내부로 이루어진 카펫을 보았다.
갈색 격자 수 brown과 노란색 격자 수 yellow가 주어졌을 때, 전체 카펫의 가로와 세로 크기를 구하는 문제이다.

조건 정리

  • 전체 격자 수 = brown + yellow
  • 내부는 (가로 - 2) * (세로 - 2) = yellow
  • 테두리는 2a + 2b + 4 = brown을 만족해야 한다.
    이때 a, b는 내부 사각형의 가로와 세로이다.

즉, 아래 두 조건을 만족하는 a, b를 찾으면 된다.

  • a + b = (brown - 4) // 2
  • a * b = yellow

전체 가로, 세로는 a + 2, b + 2이다.

코드

def solution(brown, yellow):
    _sum = (brown - 4) // 2
    _mul = yellow
    
    for i in range(1, _sum // 2 + 1):
        j = _sum - i
        if i * j == _mul:
            return [j + 2, i + 2]
  • i, j는 내부 사각형의 세로와 가로이다.
  • 조건을 만족하면 테두리를 더해 [전체 가로, 전체 세로]를 반환한다.
  • 가로가 세로보다 크거나 같다는 조건을 만족한다.

예시

solution(10, 2)  # [4, 3]
solution(8, 1)   # [3, 3]
solution(24, 24) # [8, 6]
 
Comments