본문 바로가기
Algorithm/프로그래머스

[프로그래머스] : Python,파이썬 카펫 풀이

by 오주현 2022. 4. 29.
반응형

 

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로 나눠 떨어지는 것만 계산하게 한다.

 

아래에서 수식을 통해 값을 구하면 된다.

반응형

댓글