링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
생각해야 할 점
1. 전체 타일의 수는 "노란색 타일 수 + 갈색 타일 수"와 같다.
2. 노란색 타일을 갈색 타일이 감쌀 수 있는 최소 가로와 세로의 수는 "3"이다.
3. 노란색 타일을 갈색 타일이 감싸려면 (가로 - 2) * (세로 - 2)가 노란색 타일의 수와 같아야 한다.
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int w = 3; int h = 3; // 노란색 타일을 갈색 타일이 감쌀 수 있는 최소 가로, 세로 수 = 3
int area = brown + yellow; // 전체 타일 수
while(true) {
// 직사각형을 만들 수 없음
if(area % h != 0) {
h++;
continue;
}
w = area / h;
int num = (w-2) * (h-2); // 노란색 타일의 수는 (가로-2) * (세로-2)와 같아야 함
if(num == yellow) {
answer[0] = w;
answer[1] = h;
break;
} else {
h++;
}
}
return answer;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 미로 탈출(Java) (3) | 2024.10.22 |
|---|---|
| [프로그래머스] 다리를 지나는 트럭(Java) (2) | 2024.10.21 |
| [프로그래머스] 피로도(Java), DFS (0) | 2024.10.16 |
| [프로그래머스] 구명보트(Java) (2) | 2024.10.14 |
| [프로그래머스] 성격 유형 검사하기(Java) (4) | 2024.10.09 |