Algorithm/프로그래머스
[Java] 카펫
내영잉
2023. 4. 4. 11:24
1. 문제 📚
https://school.programmers.co.kr/learn/courses/30/lessons/42842
2. 입출력 예 📋
3. 알고리즘 ✅
노란색의 개수에 따라서 갈색의 개수가 달라지기때문에 노란색의 개수가 우선이라고 생각했다!
조건에서 가로의 개수가 더 길다고 나와있었으므로 조건절에 넣어서 노란색의 격자를 구해줬다.
1. 노란색 가로 세로 구하기
2. 갈색 가로 세로는 각각 노란색가로 + 2 노란색세로 +2 이다.
3. 갈색 가로 * 갈색 세로가 파라미터로 주어진 노란색 + 갈색 과 같은지 체크 (중요)
4. 소스코드 💻
import java.util.*;
class Solution {
static int width, height;
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
// 1. 노란 격자 부터 구하기
int yellowWidth = yellow;
int yellowHeight = 1;
for (int i = 1; i <= yellow; i++) {
if (yellow % i != 0) continue;
int tempHeight = i;
int tempWidth = yellow / tempHeight;
// 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
if (tempWidth >= tempHeight) {
if ((tempWidth + 2) * (tempHeight + 2) != (brown + yellow)) continue;
yellowWidth = tempWidth;
yellowHeight = tempHeight;
}
}
answer[0] = yellowWidth + 2;
answer[1] = yellowHeight + 2;
return answer;
}
}
굿