문제
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
< 카펫 >
문제 풀이 (Java)
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sum = brown + yellow;
for (int i = 1; i <= sum; i++) {
if (sum % i != 0 || i < sum / i) {
continue;
}
if ((2 * i + 2 * (sum / i) - 4 == brown) && ((i - 2) * (sum / i - 2) == yellow)) {
answer[0] = i;
answer[1] = sum / i;
break;
}
}
return answer;
}
}
가로 x 세로 = 노란색 + 갈색이므로 먼저 전체 합을 구한다. 가로를 i로 두고 sum이 i로 나누어 떨어지고 가로가 더 길다면 (2 x 가로) + (2 x 세로) - 4 = 갈색, (가로 - 2) * (세로 - 2) = 노란색이 맞는지 확인한다. 맞다면 answer에 가로, 세로를 저장한 후 종료한다.
최종 answer을 반환한다.

출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 택배상자 (0) | 2026.05.21 |
|---|---|
| [programmers] 옹알이 (2) (0) | 2026.05.20 |
| [programmers] 멀리 뛰기 (0) | 2026.05.18 |
| [programmers] 귤 고르기 (0) | 2026.05.15 |
| [programmers] String, Date문 - SQL 고득점 Kit (0) | 2022.02.06 |