[코딩테스트] 프로그래머스 42842, 카펫

2022. 7. 17. 17:04CodingTest

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제접근

  • yellow의 가로의 길이는 최소 1~yellow까지입니다.
  • yellow의 가로 길이에 따라서 세로의 길이도 달라집니다.
  • yellow의 세로 길이 = yellow 개수 / yellow 가로 길이
  • brown는 yellow를 감싸는 형태여야 합니다.
  • brown의 가로 길이 = yellow 가로 길이 + 2
  • brown의 세로 길이 = yellow 세로 길이 + 2
  • yellow의 가로 길이를 1부터 yellow 변수까지 반복하여 yellow 가로 길이에 따른 yellow 세로길이, brown 가로 길이, brown 세로 길이를 계산한다음 입력받은 받은 brown의 개수와 비교하여 일치한다면 해당 카펫의 가로 길이와 세로 길이를 반환합니다.

 

구현

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

		for(int y_width = 1; y_width <= yellow; y_width++){
			int y_height = yellow   / y_width;
			int b_width  = y_width  + 2;
			int b_height = y_height + 2;
			int b = (b_width * b_height) - yellow;

			if(b == brown && b_width >= b_height){
				answer[0] = b_width;
				answer[1] = b_height;
				break;
			}
		}
		return answer;
	}
	public static void main(String[] args){
		new Solution().solution(10, 2);
	}
}