Problem Solving/프로그래머스

[프로그래머스/JavaScript] 최소직사각형

세고래 2022. 12. 14. 20:47

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

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

programmers.co.kr


1) 풀이

레벨 1인데도 헤맸던 문제..!

'질문하기' 에서 팁을 봤는데

'명함을 다 가로로 놓고 본다고 가정해보자..!' 라는 말이 있어서 참고했다

즉, 2차원 배열로 들어가 있는 안의 배열 2개 요소 중 큰 것과 작은 것을 구분해서 각각 특정 인덱스로 분리해놓고

큰 값을 모아놓은 인덱스끼리 주르륵, 작은 값 모아놓은 인덱스끼리 주르륵 비교해서 각각에서의 큰 값을 곱해서 return 해주면 된다! (ex. sizes[i][0]과 sizes[i][1]을 비교해서 sizes[i][0] 에는 작은 값을, sizes[i][1]에는 큰 값을 담아놓고 다시 배열을 순회하면서 [i][0] 들끼리 비교해서 큰 값, [i][1] 들끼리 비교해서 큰 값을 뽑아 두 값을 곱한다!)

2) 최종 소스코드
function solution(sizes) {
    sizes=sizes.map((val)=>val[0]<=val[1]?val:[val[1],val[0]]);
    let h=sizes[0][0];
    let w=sizes[0][1];
    for(let i=0;i<sizes.length;i++){
        if(h<sizes[i][0]) h=sizes[i][0];
        if(w<sizes[i][1]) w=sizes[i][1];
    }
    return w*h;
}
728x90