https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

yellow의 약수 쌍을 이용해 노란색 영역의 가로, 세로를 구했다.
노란색 영역을 w * h라고 하면 갈색 테두리 개수는 (w + 2) * 2 + h * 2로 계산할 수 있다.
이 값이 brown과 같다면 전체 카펫의 크기는 {w + 2, h + 2}가 된다.
정답 코드
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
List<int[]> innerSquareSize = new ArrayList<>();
for(int i=1; i*i<=yellow; i++) {
if(yellow%i != 0) continue;
innerSquareSize.add(new int[] {yellow/i, i});
}
for(int[] arr : innerSquareSize) {
int w = arr[0];
int h = arr[1];
if((w+2) * 2 + h * 2 == brown) {
return new int[] {w+2, h+2};
}
}
return new int[] {-1, -1};
}
}'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글
| [프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 소수 찾기 (0) | 2026.07.07 |
|---|---|
| [프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 타겟 넘버 (0) | 2026.07.07 |
| [프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 퍼즐 조각 채우기 (0) | 2026.07.06 |
| [프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 프로세스 (0) | 2026.07.06 |
| [프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 이중우선순위큐 (0) | 2026.06.10 |