[프로그래머스] 카펫

fsm12·2023년 8월 3일
0

프로그래머스

목록 보기
54/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

brown, yellow
Leo가 본 카펫에서 갈색 격자의 수, 노란 격자의 수 | 10,2 | brown은 8 이상 5,000 이하인 자연수, yellow는 1 이상 2,000,000 이하인 자연수, 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 김

[ 문제 ]

카펫의 가로, 세로 크기를 순서대로 배열에 담아 return

[ 풀이 ]

가로를 a, 세로를 b라고 할 때, a*b = brown + yellow와 같기 때문에, 2부터 ab/2까지의 수를 순회하며 나눠지고 조건(2a+2b-4 = brown 또는 ab-2a-2b+4 = yellow)중 하나를 만족하면 가능한 크기이므로 이를 return



코드

> [성공] 1차 시도 : 구현

  • 생각한 풀이 그대로 구현
class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int ab = brown + yellow;
        
        for(int i=2; i<ab/2; i++){
            int test_b = i;
            if(ab%test_b!=0)
                continue;
            
            int test_a = ab/test_b;
            if(2*test_a + 2*test_b - 4 == brown){
                answer = new int[]{test_a, test_b};
                break;
            }
        }
        return answer;
    }
}



0개의 댓글