몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 1] 최소직사각형 {언어 : JavaScript} 본문

알고리즘

프로그래머스 [Lv. 1] 최소직사각형 {언어 : JavaScript}

스위태니 2024. 3. 5. 21:30

문제 링크

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

 

프로그래머스

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

programmers.co.kr

정답 코드 1

function solution(sizes) {
    const newSizes = sizes.map(([w, h]) => {
        if (w >= h) {
            return [w, h]
        }
        return [h, w]
    })
    let maxW = 0
    let maxH = 0
    
    newSizes.forEach(([w, h]) => {
        if (w > maxW) {
            maxW = w
        }
        if (h > maxH) {
            maxH = h
        }
    })
    const answer = maxW * maxH;
    return answer;
}

정답 코드 2

function solution(sizes) {
    const [width, height] = sizes.reduce(([w, h], [l, r]) => [Math.max(w, Math.max(l, r)), Math.max(h, Math.min(l, r))], [0, 0])
    return width * height;
}

느낀점

  • reduce를 활용하는 방법은 아는데 이걸 Math.max까지 활용하는 것은 확실히 경험의 차이인 것 같다.