728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42842
728x90
메모리: 75.5 MB, 시간: 0.05 ms
사용 알고리즘: 수학, 완전탐색
yellow의 가로 길이를 x
, 세로 길이를 y
라고 할 때,
yellow = x * y
이다.
brown은 yellow를 한 줄 감싸고 있으므로 yellow 위아래(x * 2) + yellow 왼쪽오른쪽(y * 2) + 4개의 모서리
로 이루어져 있으므로 brown = (x * 2) + (y * 2) + 4
이다.
이를 만족하는 x
와 y
를 완전 탐색을 통해 구하면 된다.
class Solution {
public int[] solution(int brown, int yellow) {
/**
* yellow의 가로 길이 = x, 세로 길이 = y일때
* yellow = x * y
* brown = (2 * x) + (2 * y) + 4
*
* 완전탐색으로 가능한 x와 y를 구한다.
* x와 y는 yellow의 가로, 세로 길이이기 때문에 answer는 +2 씩 되어야 한다.
*/
int[] answer = new int[2];
int y;
for(int x = 1; x <= yellow; x++) {
// x가 yellow의 약수인 경우에만 확인
if(yellow % x != 0) continue;
y = yellow / x;
if(brown == 2 * x + 2 * y + 4) {
if(x > y) answer = new int[] {x + 2, y + 2};
else answer = new int[] {y + 2, x + 2};
break;
}
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 49995] 쿠키 구입 (java) (0) | 2024.08.13 |
---|---|
[프로그래머스, 42884] 단속카메라 (java) (0) | 2024.08.12 |
[프로그래머스, 12937] 짝수와 홀수 (java) (0) | 2024.08.12 |
[프로그래머스, 17685] [3차] 자동완성 (java) (0) | 2024.08.11 |
[프로그래머스, 12938] 최고의 집합 (java) (0) | 2024.08.11 |