728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
노란 격자(내부)의 가로·세로를 (w, h)라고 두고, 갈색 격자는 테두리 한 줄이므로 최종 카펫 크기는 (w+2, h+2)입니다.
조건은
- w * h = yellow
- (w+2) * (h+2) = brown + yellow
을 만족하는 (w, h)를 찾아 (w+2, h+2)를 반환
class Solution {
// w * h = yellow일 때 (w+2)*(h+2) = brown+yellow
public int[] solution(int brown, int yellow) {
int[] answer = {};
int total = brown+yellow;
// yellow의 약수쌍 (h<=w)만 검사
for(int h=1; h*h <= yellow; h++){
if(yellow % h != 0) continue;
int w = yellow / h;
int W = w+2, H = h+2;
if(W*H == total){
// 요구사항 만족
return new int[]{Math.max(W,H), Math.min(W, H)};
}
}
// 답 없는 경우
return new int[]{0,0};
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 모음 사전 : Java (0) | 2025.09.26 |
|---|---|
| [Lv.2] 전력망을 둘로 나누기 : Java (0) | 2025.09.26 |
| [Lv.2] 게임 맵 최단거리 : Java (0) | 2025.09.26 |
| [Lv.2] 프로세스 : Java (0) | 2025.09.26 |
| [Lv.2] JadenCase 문자열 만들기 : Java (0) | 2025.09.26 |