Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[문제풀이] Level2 카펫 본문
카펫
🪅 약수를 구하는 알고리즘을 짤 수 있느냐
🪅 예시를 보고 출력과 입력사이의 규칙을 찾을 수 있느냐
이 문제의 answer는 카펫의 가로격자수와 세로격자수를 배열로 출력하는 것이다.
즉, 가로격자수 x 세로격자수 = (카펫 전체 격자수)
'카펫 전체 격자수'는 갈색 격자수와 노란색 격자수를 합한 값이 되고
'카펫 전체 격자수'의 약수 중에서 가로격자수가 세로격자수보다 큰 약수들의 쌍을 구한다.(문제 전제)
그림을 보면 갈색격자는 모든테두리에 한줄씩 들어감으로 (가로격자수-2) * (세로격자수-2) = '노란색 격자수'가 된다.
위에서 구한 쌍 중에서 위의 조건을 만족하는 하나의 쌍을 답으로 출력한다.
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int total = brown + yellow;
List<Integer[]> divisorList = new ArrayList<>();
// 약수끼리 묶어서 divisorList에 add
for(int i = 1; i <= total; i++) {
if(total % i == 0) {
Integer arr[] = new Integer[2];
arr[0] = i;
arr[1] = (total/i);
divisorList.add(arr);
}
}
// 출력 test
// for(int i = 0; i < divisorList.size(); i++) {
// Integer[] a = divisorList.get(i);
// for(int j = 0; j < 2; j++) {
// System.out.print(a[j] + " ");
// }
// System.out.println();
// }
for(int i = 0; i < divisorList.size(); i++) {
Integer[] a = divisorList.get(i);
if(a[0] >= a[1] && (a[0]-2)*(a[1]-2) == yellow) {
answer[0] = a[0];
answer[1] = a[1];
}
}
return answer;
}
}
'코딩 테스트 > 문제풀이' 카테고리의 다른 글
[문제풀이] Level1 같은 숫자는 싫어 (0) | 2023.02.28 |
---|---|
[문제풀이] Level2 타겟넘버 (0) | 2023.02.24 |
[문제풀이] Level1 모의고사 (0) | 2023.02.23 |
[문제풀이] Level2 모음사전 (1) | 2022.12.30 |
[문제풀이] Level2 피로도 (0) | 2022.12.28 |
Comments