티스토리 뷰

딱 보자마자, "이건 뭐지..." 하고 한참을 생각한 문제이다. 각 격자의 개수는 기억해놓고 그 넓이를 기억을 못한다는 LEO.... 

사실 복잡해보이지만, 진짜 단순하게 생각하면 결국 카펫의 넓이는 노란 타일 부분의 가로와 세로 부분에 각각 +2씩하여 넓이를 구하면 된다. 

 

두 타일의 개수를 더하여 나온 타일의 총 개수 = 카펫의 넓이이므로, 노란 타일의 개수를 받아와 1부터 나누어가며 딱 나누어 떨어지면서 나눈 수와 몫을 곱했을 때 총 타일의 개수가 되는 순간, 도출한 가로와 세로 크기에 2씩을 더하여 추출하면 되는 문제이다.


package com.choonham;

class Solution {
	public int[] solution(int brown, int yellow) {
		int[] answer = new int[2];
		int sum = brown + yellow; // 12
		int widthY = 1;
		int heightY = 1;

		if (yellow == 1) {
			answer[0] = 3;
			answer[1] = 3;
		}

		for (int i = 1; i < yellow; i++) {
			if (yellow % i == 0) {
				int j = yellow / i;
				heightY = i + 2;
				widthY = j + 2;
				if (widthY * heightY == sum) {
					answer[0] = widthY;
					answer[1] = heightY;
					break;
				}
			}
		}

		return answer;
	}
}

 


띠용... 막상 풀어놓고 "이게 되겠어??" 했는데 덜컥 성공한 기분 좋은 문제였다.ㅎㅎ

 

끝!!

Comments