Programmers

Programmers LV.2 카펫

Developer Garam.Choi 2020. 12. 30. 14:33

 

수학적 접근을 해야한다 

 

가로x세로 = 브라운 + 옐로우

옐로우 = 가로-2 * 세로-2

 

위 식 세우고, 포문 돌렸따. 

 

더 쉽고 빠르게 가능할꺼같은데 머리가 아프다

@org.junit.Test
    public void carpet(){

        int brown = 14;
        int yellow = 4;


        // (가로x세로) = 브라운 + 옐로우
        // 옐로우 1= 가로-2 * 세로-2 ( 옐로우의 면적이 2x2 )
        // 옐로우 1 = 3x3
      
        int[] answer = new int[2];

        for(int x = 3; x<2000; x++ ){
            for(int y=3; y<2000; y++){
                if(((x-2)*(y-2)) == yellow && (x*y) == (brown+yellow)){
                    answer[0] = x;
                    answer[1] = y;
                    break;
                }
            }
        }

        for(int xy :answer){
            System.out.println(xy);
        }
    }