문제
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
설명
입출력
나의 풀이
풀이 과정
풀이 방법을 간단하게 정리하면 큰 것들 중 제일 큰 것 과 작은 것들 중 제일 작은 것의 곱이다.
말 그대로 모든 명함을 수납하려면 가로의 길이들 중 제일 긴 것과 세로의 길이들 중 제일 긴 것을 골라야 한다.
따라서 코드로 구현할 때 위의 설명을 그대로 길이를 비교하며 구현하였다.
public class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max = 0;
int min = 0;
for(int i=0; i < sizes.length; i++) {
if( sizes[i][0] >= sizes[i][1] ) {
if( sizes[i][0] > max ) {
max = sizes[i][0];
}
if (sizes[i][1] > min ) {
min = sizes[i][1];
}
} else {
if( sizes[i][1] > max ) {
max = sizes[i][1];
}
if (sizes[i][0] > min ) {
min = sizes[i][0];
}
}
}
answer = max * min;
return answer;
}
}
for문으로 배열을 돌며 첫 번째 조건문에서 두 값 중 큰 값과 작은 값으로 나누고
큰 값은 max 값과 비교해서 더 크면 갱신, 작은 값도 min 값과 비교해서 더 크면 갱신해주었다.
하지만...
Math.max(), Math.min() 함수를 쓰면 더 간단해질 것 같다는 생각이 뒤늦게 들었다..
아래는 구현 코드이다..
class Solution {
public int solution(int[][] sizes) {
int answer = 0;
int max=0, min=0;
int m, n;
for(int i=0; i < sizes.length; i++) {
m = Math.max(sizes[i][0], sizes[i][1]);
n = Math.min(sizes[i][0], sizes[i][1]);
max = Math.max(max,m);
min = Math.max(min,n);
}
answer = max * min;
return answer;
}
}
흠.. 아주 깔끔하군🫠
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (JAVA) Lv2 더 맵게 (0) | 2023.07.02 |
---|---|
[프로그래머스] (JAVA) Lv2 카펫 (0) | 2023.07.02 |
[프로그래머스] (JAVA) Lv2 전화번호 목록 (0) | 2023.07.01 |
[프로그래머스] (JAVA) Lv0 배열 조각하기 (0) | 2023.06.01 |
[프로그래머스] (JAVA) Lv0 더 크게 합치기 (0) | 2023.06.01 |