카펫

유태형·2022년 2월 17일
0

문제

문제 분석

노란색 카펫으로부터 갈색 카펫을 구해야하는 문제이다.
갈색카펫의 갯수를 비교해야 할 것 같다.




풀이

노란 카펫부터

노란카펫의 크기를 구하기 위해선 가로와 세로의 길이를 알아야 한다. 가로가 세로보다 항상 같거나 길므로
세로를 1씩 증가시켜가며 나눠떨어지면(노란색 갯수가 일치) 갈색카펫과 갯수를 비교한다.

	if(yellow % i != 0)
           continue;
      else{
           height = i;
           width = yellow / i;
       }

브라운카펫의 갯수와 비교

노란색 카펫들을 감싸고 있는 브라운 카펫의 개수를 비교한다.
상하좌우로 브라운 카펫을 덮어주고 대각선 가장자리에 하나씩 연결해주면 감쌀수 잇을 것이다.

		if((2 * height) + (2 * width) + 4 == brown)
           break;



코드

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int height = 0;
        int width = 0;
        //너비의 크기를 1부터 증가 시켜본다
        for(int i = 1; i <= yellow; i++){
            if(yellow % i != 0) continue; //너비가 나누어 떨어지지 않으면 길이가 아님
            else{ //너비가 나누어 떨어지면 후보임
                height = i; //노란 카펫의 너비
                width = yellow / i; //노란 카펫의 높이
            }
            //상,하,좌,우,모서리 1개씩이 브라운갯수와 같으면 끝
            if((2 * height) + (2 * width) + 4 == brown) break;
        }
        answer[0] = width + 2; //브라운 카펫의 너비
        answer[1] = height + 2; //브라운 카펫의 높이
        return answer;
    }
}



GitHub

https://github.com/ds02168/Study_Algorithm/blob/master/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/%EC%9E%90%EB%B0%94/Level2/%EC%B9%B4%ED%8E%AB.java

profile
오늘도 내일도 화이팅!

0개의 댓글

관련 채용 정보