문제 풀이/프로그래머스

[프로그래머스] 카펫(JAVA)

27200 2024. 5. 5. 23:27

https://school.programmers.co.kr/learn/courses/30/lessons/42842


 

풀이

class Solution {
    public int[] solution(int brown, int yellow) {
        int x = 0;
        while(true){
            if((x - 2) *(-x+brown/2) == yellow){
                break;
            }else{
                x++;
            }
        }
        int y = 2-x + brown/2;
        int[] answer;
        if(x>y){
            answer = new int[]{x,y};
        }else{
            answer = new int[]{y,x};
        }
        return answer;
    }
}

 

연립방정식과 동일한 문제이다.
x y 열이면
브라운은 2x+2y-4 = brown
옐로우는 (x-2)*(y-2) = yellow

 

즉, 여기서 브라운에 관한 식을 y에 대해 정리한 뒤에 연립방정식에서 x를 하나씩 증가시키는 방향으로 풀면 된다.

최종적으로 행이 열보다 커야하므로 if문을 통해 배열을 확정해준다.