[프로그래머스]-최소 직사각형
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1.문제


2. 풀이
모든 명함을 넣을 수 있는 가장 작은 지갑을 만드는 게 이 문제의 핵심입니다.
처음에는 브루트 포스 개념을 떠올려서 모든 경우의 수를 다 고려해야 하지 않을까 하는 마음으로 접근했었는데, 막상 해결하고 나니 너무나도 단순하게 풀려서 허무함이 느껴졌습니다.
명함이 회전할 수 있다는 개념을 잘 응용해야 합니다.
가로와 세로를 비교했을 때 두 변중에서 긴 부분을 가로로 설정하고 작은 부분을 세로로 설정하면 됩니다.
변경전 변경후
60 50 => 60 50
30 70 => 70 30
60 30 => 60 30
80 40 => 80 40
그 다음 가로와 세로의 길이가 모두 들어맞도록, 가로의 최대 길이와 세로의 최대 길이를 정해서 진행해주시면 됩니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
public class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max_width = 0; // 가로
int max_height = 0; // 세로
for (int i = 0; i < sizes.length; i++) {
int width = Math.max(sizes[i][0], sizes[i][1]);
int height = Math.min(sizes[i][0], sizes[i][1]);
max_width = Math.max(max_width, width);
max_height = Math.max(max_height, height);
}
answer = max_width * max_height;
return answer;
}
}
|
cs |
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스]-K번째수 (0) | 2022.12.30 |
|---|---|
| [프로그래머스]카펫 (0) | 2022.12.28 |
| [프로그래머스]부족한 금액 계산하기 (0) | 2022.12.27 |
| [프로그래머스]2016년 (0) | 2022.12.23 |
| [프로그래머스]콜라츠 추측 (0) | 2022.12.13 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스]-K번째수
[프로그래머스]-K번째수
2022.12.30 -
[프로그래머스]카펫
[프로그래머스]카펫
2022.12.28 -
[프로그래머스]부족한 금액 계산하기
[프로그래머스]부족한 금액 계산하기
2022.12.27 -
[프로그래머스]2016년
[프로그래머스]2016년
2022.12.23