코테 준비-문제풀기

프로그래머스 - 카펫 /완전탐색/ JAVA 자바

FireStone 2020. 10. 21. 01:14

width: x, height:y라고 할때 

1. brown은 2x+2y-4다. =>한줄만 테두리라는 것을 잊지 말아야 한다!

2. width는 최소 3이다. yello가 '1'일때 width가 최소 3이 되어야한다.

그리고 width는 최대 (brown-2)/2다. => height가 1이라고 할때 양옆에 2개 필요함 && 위아래로 같은 갯수 필요함

그래서 width를 3부터 max_width까지 돌아주게 했다.

3. height는 (brown-2*width+4)/2 

4. brown+yello가 width*height랑 같아지면 바로 리턴

 다른 블로그들을 보니 아이디어는 비슷하지만 조건문을 조금씩 다르게 하는 경우도 있다.

참고하실 분은 다른 블로그도 더 찾아보시길..

class Solution {

    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int num = brown+yellow;
        //최대 width 
        int max_width=(brown-2)/2; 
        
        for(int width=3;width<=max_width;width++){
            int height = (brown-2*width+4)/2;
             if(width>=height){
                 int cal_num = width*height;
                 if(cal_num==num){
                     answer[0]=width;
                     answer[1]=height;
                     return answer;
                 }
             }
            else
                continue;
        }
      
        return answer;
    }
}