[프로그래머스 문제풀이] 21. 카펫

WIGWAG·2023년 1월 5일
0

프로그래머스

목록 보기
21/32

나의 풀이

이전 문제와 같은 레벨 2지만 이전 문제에 비해 매우 쉬웠다.


yellow의 약수를 구하고 yellow칸의 가로 세로를 먼저 설정한다.
brown은 테두리 1칸으로 yellow칸을 둘러싸고 있기 때문에
가로와 세로에 각각 +2를 해서 둘을 곱한 값이
brown칸과 yellow칸을 합친 큰 직사각형이 되는 지 확인한다.


🎉완성코드

vector<int> solution(int brown, int yellow) {
	for (int i = 1; i * i <= yellow; i++)
    {
        if (yellow % i == 0)
        {
           int w = yellow/i + 2;
           int h = i + 2;

           if (w * h == brown + yellow)
               return { w,h };
        }
    }
}

추천을 가장 많이 받은 풀이

알고리즘을 수학공식으로 세워서 해결했다.

vector<int> solution(int brown, int yellow) {
    int x, y;   //2차방정식의 해로 품.
    x= 0.5*((2+brown/2)+sqrt((2+brown/2)*(2+brown/2)-4*brown-4*yellow));
    y=  0.5*brown-x+2;
    return {x,y};
}

카펫 문제 링크

profile
윅왁의 프로그래밍 개발노트

0개의 댓글