문제 :
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해결 :
class Solution {
public int solution(int[][] sizes) {
int ga = sizes[0][0];
int se = sizes[0][1];
//가로, 세로 중에 가장 큰 길이를 골라서. 기준 길이로 잡는다.
for(int i = 0; i<sizes.length; i++){
ga = Math.max(ga, sizes[i][0]);
se = Math.max(se, sizes[i][1]);
}
int maxlen = Math.max(ga, se);
int minlen = Math.min(sizes[0][0], sizes[0][1]);
//다시 배열을 for문으로 돌며 배열마다 가로세로 비교하며 작은 숫자중에 큰 길이를 찾는다.
for(int i = 0; i<sizes.length; i++){
int gase = Math.min(sizes[i][0], sizes[i][1]);
if(gase >= minlen) minlen = gase;
}
return minlen*maxlen;
}
}
다른 사람 풀이 :
class Solution {
public int solution(int[][] sizes) {
int length = 0, height = 0;
for (int[] card : sizes) {
length = Math.max(length, Math.max(card[0], card[1]));
height = Math.max(height, Math.min(card[0], card[1]));
}
int answer = length * height;
return answer;
}
}
sizes 2차원 배열을 for문으로 1차원 배열로 만들어서
가장 긴 길이 구하고
1차원 배열에서 작은 것중에 큰 길이 구하면되는 간단한 로직이였다..
'알고리즘 > [프로그래머스] JAVA' 카테고리의 다른 글
[프로그래머스] 카펫 (0) | 2024.04.14 |
---|---|
[프로그래머스] 피로도 (0) | 2024.04.14 |
[프로그래머스] 모의고사 (0) | 2024.04.10 |
[프로그래머스] H-Index (0) | 2024.03.24 |
[프로그래머스] 예산 (0) | 2024.03.24 |