코테/프로그래머스

[프로그래머스/Lv. 1] 최소직사각형

imname1am 2023. 3. 12. 11:47
반응형

🔺 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

🔺 코드

 

[프로그래머스,자바] Level1: 최소직사각형 (위클리 8주차)

문제분석 목표: 모든 명함을 넣을수있는 가장 작은 지갑 만들기 특수규칙: 명함은 회전할수있다. 전 이 문제를.. Set과 3차 반복문으로 40줄넘겨가면서 삽질하면서 풀었습니다... 가로와 세로에대

taehoung0102.tistory.com

import java.util.*;

class Solution {
    public int solution(int[][] sizes) {
        
        int maxV = 0;
        int maxH = 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]);
            
            maxV = Math.max(maxV, v);
            maxH = Math.max(maxH, h);
        }
        
        return maxV * maxH;
    }
}

정렬을 할 생각은 했는데 너무 길고 복잡하게 작성한 나머지 다른 분 코드를 보고 작성했다...

 

가로를 두 변 중 가장 긴 부분으로,

세로를 두 변 중 가장 작은 부분으로 설정하고 풀면 쉽게 풀린다고,,,하하하

 

 

🔺 다른 풀이들

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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;
    }
}

엄청나게 깔끔하다,,,,! 향상형 for문 짱!

반응형