본문 바로가기

프로그래머스 풀이

프로그래머스 2단계 - 카펫(Java)

깃허브:

https://github.com/MSIQOC/Programmers/blob/main/%EC%B9%B4%ED%8E%AB.java

 

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

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr

brown과 yellow로 세울 수 있는 방정식으로는

1. 두개의 가로 + 두개의 세로 - 네개의 모서리 = brown

2. (가로-2)*(세로-2) = yellow

라는 것이다.

"for x는 1부터 7-1=6까지" 는 맨 처음 입출력 예인 brown 10, yellow 2를 두고 쓴 말인데,

2x + 2y - 4 = 10이기 때문에 x + y = 7이라는 식이 만들어지고 for문을 사용해서 x는 1부터 6까지 돌리고 7-x를 이용해 y를 구한 다음에 (x-2)(y-2) = 2라는 조건에 맞는지 검사하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int bcal = (brown+4)/2;
        boolean check = false;
        for(int x=1; x<bcal; ++x){
            int y = bcal - x;
            if((x-2)*(y-2== yellow){
                answer[0= (x >= y) ? x : y;
                answer[1= (x >= y) ? y : x;
            }
        }
        return answer;
    }
}
cs