프로그래머스 카펫 자바

2023. 5. 7. 23:47코딩테스트/프로그래머스

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

가운데는 노란색으로 색칠되어있고 테두리는 갈색으로 색칠되어 있는 카펫이 있다.

 

카펫의 가로 : x, 카펫의 세로 : y라 두면 카펫의 넓이를 area라고 하자.

area = brown + yellow

 

x를 1부터 area의 약수인지 체크하 후 (x - 2)(y - 2)와 yellow가 같고 x >= y이면 카펫의 가로, 세로를 구할 수 있다.

 

import java.util.Arrays;
public class Solution42842 {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int area = brown + yellow;

        for (int x = 1; x < brown; x++) {

            // x가 자연수가 아닐 경우 제외
            if (area % x != 0) continue;

            int y = area / x;

            if ((x - 2) * (y - 2) == yellow && x >= y) {
                answer[0] = x;
                answer[1] = y;
                break;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Solution42842 s = new Solution42842();

        int[] result = s.solution(10, 2);

        System.out.println(Arrays.toString(result));
    }
}