728x90
반응형
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
완전탐색 > 카펫
문제설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
| brown | yellow | return |
|---|---|---|
| 10 | 2 | [4, 3] |
| 8 | 1 | [3, 3] |
| 24 | 24 | [8, 6] |
코드
class Solution {
public int[] solution(int brown, int yellow) {
return carpet(brown, yellow);
}
/**
* 카펫의 가로 세로 사이즈를 계산해 리턴
* @param brown 갈색 격자의 수
* @param yellow 노란색 격자의 수
* @return 카펫의 가로, 세로 크기를 순서대로 담은 배열
*/
public int[] carpet(int brown, int yellow) {
int size = brown+yellow;
int a=0, b=0;
// 효율성을 늘리기 위해 제곱근까지만 탐색
for (int i=3; i<=Math.sqrt(size); i++) {
if (size%i==0) {
// 계산된 가로, 세로의 길이가 brown의 갯수랑 맞는지 확인
if (brown == 2*i+2*(size/i)-4) {
a=i;
b=size/i;
break;
}
}
}
return new int[] {b, a};
}
}
결과

728x90
반응형
'코딩테스트' 카테고리의 다른 글
| [프로그래머스/자바] 2018 KAKAO BLIND RECRUITMENT > [1차] 캐시 (0) | 2025.10.10 |
|---|---|
| [프로그래머스/자바] 연습문제 > 최솟값 만들기 (0) | 2025.09.30 |
| [프로그래머스/자바] PCCP 기출문제[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2025.09.25 |
| [프로그래머스/자바] 2025 프로그래머스 코드챌린지 1차 예선 > 유연근무제 (1) | 2025.07.22 |
| [프로그래머스/자바] 2025 프로그래머스 코드챌린지 2차 예선 > 택배 상자 꺼내기 (1) | 2025.07.18 |
댓글