Algorithm/프로그래머스
[프로그래머스] : Python,파이썬 카펫 풀이
오주현
2022. 4. 29. 14:16
반응형
def solution(brown, yellow):
ab = brown + yellow
for b in range(1, ab+1):
if (ab / b) % 1 == 0:
a = ab/ b
if a >= b:
if a*2 + b*2 == brown + 4:
return [a,b]
방정식을 활용해야 한다.
전제 조건을 살펴보면 카펫의 가로 길이는 세로 길이와 같거나 길다. 즉, 가로 ≥ 세로가 된다.
가로를 a 세로를 b라고 했을 때 갈색과 노란색 칸 수를 구해보면 수식은 2a - 2b - 4 = Brown이 된다. 가로 * 세로를 했을 때 각 겹치는 모서리 부분을 빼줘야 하기 때문에 -4를 해준다. 즉, 저 수식에서 a 값만 구하면 b값을 알 수 있게 된다.
for 문으로 전체 네모칸 만큼 반복시킨다.
if 문을 통해 a 길이를 구하기 위해 ab를 b로 나눠 떨어지는 것만 계산하게 한다.
아래에서 수식을 통해 값을 구하면 된다.
반응형