문제 분석
모든 명함을 넣을 수 있는 가장 작은 지갑을 만드는 것이 문제의 목표이다.
처음에 문제를 보았을때 가로와 세로에 틀에 있어서 문제해결이 어려웠는데 그런 거 없이 두변중에 가장 긴 부분을 가로라고 생각하고 짧은 부분을 세로라고 생각하면 쉽게 풀리는 문제입니다.
가로 : 두 변중에서 긴 부분
세로 : 두 변중에서 짧은 부분
그림과 같이 변경 후 가로 길이와 세로 길이에서 제일 큰 부분을 찾아서 문제를 풀면 정말 간단한 문제가 된다.
풀이
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max_v=0;
int max_h=0;
for(int i=0;i<sizes.length;i++){
//두 변중에서 긴부분과 짧은 부분 구별해서 가로, 세로 정하기
int v=Math.max(sizes[i][0],sizes[i][1]);
int h=Math.min(sizes[i][0],sizes[i][1]);
//여러개의 명함에서 가장 긴 가로와 세로 구하기
max_v=Math.max(max_v,v);
max_h=Math.max(max_h,h);
}
return answer=max_v*max_h;
}
}
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 - Java ] 다트게임(2018 KAKAO BLIND RECRUITMENT) (1) | 2022.04.25 |
---|---|
[ 프로그래머스 - java ] 비밀지도 ( 2018 KAKAO BLIND RECRUITMENT ) (0) | 2022.04.07 |
[ 프로그래머스 - java ] 실패율 ( 2019 KAKAO BLIND RECRUITMENT ) (0) | 2022.04.01 |
[ 프로그래머스 - java ] 체육복 (탐욕법) (0) | 2022.03.25 |
[ 프로그래머스 - java ] 모의고사 (완전탐색) (0) | 2022.03.25 |
댓글