[프로그래머스]완전탐색-카펫

snusun·2021년 1월 17일
0

level 1으로 했어도 무방한 문제! 간단해서 풀기 쉬웠다.
이 문제를 풀면서 2차원 ArrayList를 처음 사용해보았는데 직관적이라 좋다.

  • 알고리즘

    (1) yellow에 대해 a*b=yellow인 자연수 a, b쌍을 구한다.
    (2) 2a+2b+4=brown인 a, b를 찾아 return

import java.util.*;

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = {};
        ArrayList<int[]> inner = new ArrayList<>(); 

        for(int i=1; i<=Math.sqrt(yellow); i++){
            if(yellow%i==0){
                int j = yellow/i;
                if(i >= j){
                    inner.add(new int[]{i, j});  
                } else {
                    inner.add(new int[]{j, i});
                }
            }
        }
        
        for(int i=0; i<inner.size(); i++){
            int[] temp = inner.get(i);
            if(2*temp[0] + 2*temp[1] + 4 == brown){
                temp[0] += 2;
                temp[1] += 2;
                return temp;
            }
        }

        return answer;
    }
}
profile
대학생 근데 이제 컴공을 곁들인

0개의 댓글