프로그래머스 Lv.2 카펫 파이썬
2024. 7. 10. 15:54ㆍ알고리즘문제 풀이/프로그래머스
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42842
풀이
카펫의 가로 길이를 a, 카펫의 세로 길이를 b라고 하자.
(직사각형의 넓이) = a * b = brown + yellow
(a - 2) * (b - 2) = yellow
위 식을 통해 a, b를 brown, yellow로 표현해보자.
a * b - 2 * (a + b) + 4 = yellow
brown + yellow - 2 * (a + b) + 4 = yellow
brown + 4 = 2 * (a + b)
a + b = brown / 2 + 2
이를 통해
p = a + b = brown / 2 + 2
q = a * b = brown + yellow
임을 알 수 있다.
해를 a,b로 하는 방정식은
(x - a) (x - b) = 0
x^2 - (a+b)x + ab = 0
x^2 - px + q = 0
x = (p ± (p^2 - 4*q)^(1/2)) / 2
가로의 길이(a)가 세로의 길이(b)보다 같거나 크므로
a = (p + (p^2 - 4*q)^(1/2)) / 2
b = (p - (p^2 - 4*q)^(1/2)) / 2
전체 코드
def solution(brown, yellow):
answer = []
q = brown + yellow
p = brown / 2 + 2
a = (p + (p**2-4*q)**(1/2))/2
b = (p - (p**2-4*q)**(1/2))/2
answer = [a, b]
return answer'알고리즘문제 풀이 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 택배상자 파이썬(python) (0) | 2024.07.15 |
|---|---|
| 프로그래머스 쿼드압축 후 개수 세기 파이썬 (0) | 2024.07.15 |
| 프로그래머스 Lv.1 최소직사각형 파이썬 (0) | 2024.07.10 |
| 프로그래머스 Lv.2 H-Index 파이썬 (0) | 2024.07.10 |
| 프로그래머스 Lv.3 디스크 컨트롤러 파이썬(Python) (0) | 2024.07.10 |