Hayden's Archive

[알고리즘] 프로그래머스 : 카펫 본문

Algorithm

[알고리즘] 프로그래머스 : 카펫

_hayden 2020. 6. 17. 00:55

알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42842

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 ��

programmers.co.kr

 

내가 작성한 코드

아이디어)

- 갈색 개수와 노란색 개수는 가로와 세로를 곱한 값과 같다.

- (가로-2) * (세로-2) 는 노란색 개수와 같다.

import java.util.ArrayList;
class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        ArrayList<Integer> list = new ArrayList<>();
        int multiply = brown+yellow;
        for(int i=2; i*i<=multiply; i++) {
        	if(multiply % i==0) list.add(i);
        }
        for(Integer l : list) {
        	int h = (int)l;
        	int w = multiply/h;
        	if((w-2)*(h-2)==yellow) {
        		answer[0] = w;
        		answer[1] = h;
        		break;
        	}
        }
        return answer;
    }
}