-
[프로그래머스 Lv.2] 카펫 javaDEV/알고리즘 2020. 11. 3. 11:29
문제설명
programmers.co.kr/learn/courses/30/lessons/42842
제한사항
- 갈색 격자의 수 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>=y1234567891011121314151617181920class 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 'DEV > 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.1] 키패드 누르기 java (0) 2020.11.19 [프로그래머스 Lv.1] 크레인 인형뽑기 java (0) 2020.11.10 [프로그래머스 Lv.1] 3진법 뒤집기 java (0) 2020.10.20 [프로그래머스 Lv.2] H-Index java (0) 2020.10.18 [프로그래머스 Lv.2] 피보나치 수 java (0) 2020.10.14