728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/86491
문제 설명
문제는 링크를 통해서 확인하면 된다.
요약하자면, 명함지갑을 만드는데 세로 가로가 제 각각 크기를 갖는 명함을 넣는 최소크기의 명함지갑을 만들 때 가로 곱하기 세로를 return해주면 된다.
단, 명함지갑에 넣는 명함의 방향은 가로가 길든 세로가 길든 들어가기만 하면 되는 것이다.
해설
문제 설명에서 요약으로 설명한것 처럼 명함을 지갑에 넣기만 하면 된다는 것이다.
그렇다면, 이 문제에서 가로 세로 개념을 지워버리고 길고 짧은 길이만 알면 된다.
명함의 길고 짧은 길이만 알고 나서, 명함지갑의 가로세로 최소 길이를 파악하면 된다.
조금 더 설명을 하자면, 지갑의 가장긴 길이 A와 짧은 길이B가 있다고 가정하고 명함의 가장 긴 길이a와 짧은 길이b가 있다고 가정하자.
그렇다면, A는 a보다 같거나 크면되고 B는 b보다 같거나 크면된다.
즉, A가 a보다 작을때, B가 b보다 작을때에만 A, B를 크기를 키워주면 된다.
코드
class Solution {
public int solution(int[][] sizes) {
int prevMax = 0;
int prevMin = 0;
for (int[] size: sizes) {
int curMax = Math.max(size[0], size[1]);
int curMin = Math.min(size[0], size[1]);
prevMax = Math.max(curMax, prevMax);
prevMin = Math.max(curMin, prevMin);
}
return prevMax * prevMin;
}
}
728x90
'알고리즘 > 그리디' 카테고리의 다른 글
[프로그래머스] 덧칠하기 Lv1 JAVA [그리디][엄탱] (5) | 2023.07.11 |
---|---|
[프로그래머스] 마법의 엘리베이터 Lv2 JAVA [그리디][엄탱] (8) | 2023.07.07 |
[프로그래머스] 요격 시스템 Lv2 JAVA [그리디][엄탱] (0) | 2023.07.05 |
[자바]백준 8980번 택배 [그리디][엄탱] (3) | 2023.02.14 |
[자바]백준 13904번 과제 [그리디][엄탱] (4) | 2023.02.13 |