프로그래머스 level2 카펫

Kim Yongbin·2023년 9월 7일
0

코딩테스트

목록 보기
51/162

Problem

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

Solution

def solution(brown, yellow):
    sum_x_y = (brown + 4) // 2
    multiply_x_y = yellow + brown
    
    for i in range(1, sum_x_y):
        if multiply_x_y == i * (sum_x_y - i):
            return [sum_x_y - i, i]

# x, y
# brown = 2(x-1) + 2(y-1) = 2(x+y)-4
# yellow = xy - brown

# x+y = (brown+4) / 2
# xy = yellow - 4 + 2(x+y)

갈색 격자의 경우 카펫의 둘레와 같다. 가로, 세로를 각각 x, y라 했을 때 갈색은 brown = 2(x-1) + 2(y-1) = 2(x+y)-4

라고 할 수 있다. 노란 격자는 카펫의 넓이에서 갈색을 뺀 것과 같다. 따라서, yellow = xy - brown이다.

즉, x+y = (brown+4) / 2, xy = yellow + brown를 만족하는 x, y를 구하였다.

Reference

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글