DEV/알고리즘
[프로그래머스 Lv.2] 카펫 java
Imvory
2020. 11. 3. 11:29
문제설명
programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
Solution
카펫 둘레(brown) 구하기 : 2x + 2y -4(모서리 겹치는 부분)
식을 정리하면 x + y = (brown + 4) / 2
카펫 안쪽 넓이(yellow) 구하기 : (x-2)*(y-2) -> 가로,세로 각각 겹치는 부분빼서 곱하기
조건중 yellow는 1이상이기 때문에 y>=3, 가로 세로가 같거나 가로가 더 크므로 x>=y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int x, y = 0;
int sum = (brown+4)/2;
for(y=3; y<=sum; y++) {
x = sum - y;
if(x<y) break;
if((x-2)*(y-2)==yellow) {
answer[0] = x;
answer[1] = y;
break;
}
}
return answer;
}
}
|
cs |