본문 바로가기

컴퓨터 프로그래밍/알고리즘

프로그래머스-카펫

https://programmers.co.kr/learn/courses/30/lessons/42842?language=java

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

<내 풀이>

yellow의 갯수의 약수 짝을 구합니다. yellow 갯수과 brown  갯수를 더한수가 yellow의 약수짝에 각각 2를 더한 값이 약수가 되는지 확인 합니다. 

import java.util.HashMap;

public class l6 {
	public static int[] solution(int brown, int yellow) {
		int[] answer = new int[2];

		HashMap<Integer, Integer> hm = new HashMap<>();

		int i = 1;
		while (i * i <= yellow) {
			if (yellow % i == 0) {
				hm.put(i, yellow / i);
			}
			i++;
		}

		for (Integer j : hm.keySet()) {
			if ((j + 2) * (hm.get(j) + 2) == (brown + yellow)) {
				answer[0] = hm.get(j) + 2;
				answer[1] = j + 2;
			}
		}
		return answer;
	}

	public static void main(String[] args) {
		int brown=24;
		int yellow=24;
		for (int i : solution(brown, yellow)) {
			System.out.println(i);
		}
		

	}
}