https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr
암호
class Solution {
public int() solution(int brown, int yellow) {
/*
yellow 로 만든 사각형의 가로,세로에 2씩 더하면 전체사각형의 크기가 된다.
brown의 개수는 전체사각형의 타일 개수 - yellow 타일 개수이다.
*/
/*
1. for : i 가 1부터 yellow 의 절반까지
1) yellow 를 i 로 나눠떨어질 때만
1) i 와 yellow 를 i 로 나눈 몫을 yellow 의 가로, 세로로 정한다.
2) 전체 사각형 크기에서 brown 개수를 구한다.
3) 주어진 brown 과 일치하는가?
1} 전체 사각형 크기를 리턴한다.
*/
int() answer = new int(2);
int width = 0;
int height = 0;
int fullSquareSize = 0;
int calBrown=0;
if(yellow==1){
answer(0)=3;
answer(1)=3;
return answer;
}
for(int i=1; i<=yellow/2; i++){
if(yellow%i==0){
height = i+2;
width = yellow/i+2;
fullSquareSize = width*height;
calBrown = fullSquareSize - yellow;
if(calBrown==brown){
answer(0)=width;
answer(1)=height;
return answer;
}
}
}
return answer;
}
}
노란색이 두 공약수의 곱으로 표현되는 경우 이 경우의 숫자는 노란색으로 나타낼 수 있는 사각형의 인스턴스입니다.
따라서 위의 경우는 for 문을 통해 반복하여 하나씩 확인합니다.
노란색 값의 절반부터 노란색으로 표현되는 사각형의 너비와 높이가 달라지지만 크기는 같기 때문에 같은 사각형으로 간주한다.
댓글에 적힌대로 노란색 사각형의 가로 세로 값에 2를 더하면 갈색을 포함한 전체 사각형의 가로 세로 값이 됩니다.
전체 사각형의 크기는 노란색 + 갈색이므로 노란색을 빼면 이 경우 계산된 갈색의 수가 됩니다.
정답은 이 계산된 갈색이 주어진 갈색과 일치하는 경우입니다.
위의 논리를 따른다면 예외는 발생하지 않습니다.
20분 정도 걸렸습니다.