문제 풀이/프로그래머스
[프로그래머스] 카펫(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문을 통해 배열을 확정해준다.