1차 풀이 (2021.03.03)
- 주어진
yellow
에 따라 yellowHeight
와 yellowWidth
를 증감시키면서 정답 크기를 찾는다.
brownGuess
와 yellowGuess
가 주어진 brown
과 yellow
와 같은 경우가 정답이므로, 이를 배열로 만들어 리턴한다.
코드
class Solution {
public int[] solution(int brown, int yellow) {
int yellowHeight = 1, yellowWidth = yellow / yellowHeight;
while (true) {
int brownGuess = (yellowWidth + 2) * 2 + yellowHeight * 2;
int yellowGuess = yellowWidth * yellowHeight;
if (brown == brownGuess && yellowGuess == yellow)
break;
yellowHeight++;
yellowWidth = yellow / yellowHeight;
}
return new int[]{yellowWidth + 2, yellowHeight + 2};
}
}
2차 풀이 (2021.08.27)
코드
class Solution {
public int[] solution(int brown, int yellow) {
int total = brown + yellow;
for (int yellowHeight=1 ; yellowHeight<=Math.sqrt(yellow) ; yellowHeight++) {
if (yellow % yellowHeight == 0) {
int totalHeight = yellowHeight + 2;
int totalWidth = (yellow / yellowHeight) + 2;
if ((totalHeight * totalWidth) == total) {
return new int[]{totalWidth, totalHeight};
}
}
}
return null;
}
}