Leo๋ ์นดํซ์ ์ฌ๋ฌ ๊ฐ๋ค๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์์๋ ๋ ธ๋์์ผ๋ก ์น ํด์ ธ ์๊ณ ํ ๋๋ฆฌ 1์ค์ ๊ฐ์์ผ๋ก ์น ํด์ ธ ์๋ ๊ฒฉ์ ๋ชจ์ ์นดํซ์ ๋ดค์ต๋๋ค.
Leo๋ ์ง์ผ๋ก ๋์์์ ์๊น ๋ณธ ์นดํซ์ ๋ ธ๋์๊ณผ ๊ฐ์์ผ๋ก ์์น ๋ ๊ฒฉ์์ ๊ฐ์๋ ๊ธฐ์ตํ์ง๋ง, ์ ์ฒด ์นดํซ์ ํฌ๊ธฐ๋ ๊ธฐ์ตํ์ง ๋ชปํ์ต๋๋ค.
Leo๊ฐ ๋ณธ ์นดํซ์์ ๊ฐ์ ๊ฒฉ์์ ์ brown, ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์นดํซ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
brown | yellow | return |
---|---|---|
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
public class Solution {
// ํ๋ก๊ทธ๋๋จธ์ค LEVEL2 ์นดํซ
// ๋ฌธ์ URL : <https://programmers.co.kr/learn/courses/30/lessons/42842>
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
// ํด๋น ์กฐ๊ฑด์ ์ฌ๊ฐํ ๋์ด
int area = brown + yellow;
// ๊ฐ๋ก ์ต์ ๊ธธ์ด -- ๊ฐ๋ก ๊ธธ์ด๋ ์ธ๋ก ๊ธธ์ด์ ๊ฐ๊ฑฐ๋, ์ธ๋ก ๊ธธ์ด๋ณด๋ค ๊น๋๋ค.
int minWidth = (int) Math.sqrt(area);
// ์ฝ์ ๊ตฌํ๋ ๋ฐฉ์์ ์ด์ฉํ์ฌ ๊ฐ๋ก๊ธธ์ด ๊ณ์ฐ๊ฐ๋ฅ
// ๊ฐ๋ก์ ์ต๋๊ฐ - ๋์ด / 3 --> ์ ํ์กฐ๊ฑด์์ ์ธ๋ก ์ต์๊ฐ์ด 3์ด๊ธฐ ๋๋ฌธ์
for (int i = 3; i <= area / 3; i++) {
// i -> ์ฝ์์ด๊ฑฐ๋ ๋ฃจํธ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ธ๋ก๊ธธ์ด ๊ณ์ฐ ๋ฐ yellow ๊ฒ์ฆ
if (area % i == 0 && i >= minWidth) {
int height = area / i;
// ์ธ๋ก๊ฐ ๊ฐ๋ก๋ณด๋ค ํฌ๋ฉด SKIP
if (height > i) continue;
// ๋
ธ๋์ ๊ฒฉ์ ๊ฒ์ฆ์ ์ํ์ฌ ๊ณ์ฐ
int chkVal = (i - 2) * (height - 2);
if (chkVal == yellow) {
// ๊ฐ๋ก, ์ธ๋ก ์ค์ ๋ฐ for๋ฌธ ์ข
๋ฃ
answer[0] = i;
answer[1] = height;
break;
}
}
}
return answer;
}
}
<aside> <img src="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" alt="https://raw.githubusercontent.com/eirikmadland/notion-icons/master/v5/icon3/ul-github.svg" width="40px" /> ์ฐธ์กฐ Github Code
</aside>