ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 카펫
    Algorithm 2020. 9. 15. 12:29
    반응형

    Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

    Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

    Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

    import java.util.Arrays;
    
    public class Carpet {
        public static void main(String[] args)
        {
            System.out.println(Arrays.toString(solution(24, 24)));
        }
        static public int[] solution(int brown, int red) {
            int[] answer = {0,0};
            int index = (brown-4)/2;
            for(int i=1; i<=index; i++)
            {
                System.out.println(i*(index-i));
                if(red == i*(index-i)){
                    answer[1]=i+2;
                    answer[0]=(index-i)+2;
                    break;
                }
            }
            return answer;
        }
    
    }
    

    수학적 방법을 사용하여 풀이를 하였다.

    브라운은 무조건 레드를 둘러싸야 하기 때문에

    모서리 4칸을 뺀 가로 + 세로는 (brown-4)/2 가 된다.

    그러므로 반복문을 돌려 red = i*((brown-4)/2)-i)가 성립을 하면

    둘러 쌓인 가로는 i, 세로는 (brown-4)-i가 된다.

    마지막으로 모서리 4칸을 뺀걸 가로 세로에 2씩 더해주면 카펫의 크기가 나온다.

    반응형

    댓글

Designed by Tistory.