hani:) 2023. 6. 17. 21:52

문제

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

 

프로그래머스

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

programmers.co.kr

 

문제 풀이

해당 문제의 경우 첫 작성 코드를 바로 최종 제출함.

 

최종 제출

function solution(sizes) {
    let longs = [];
    let shorts = [];
    for (let i=0; i<sizes.length; i++) {
        let w = sizes[i][0]; // 가로
        let h = sizes[i][1]; // 세로
        if (w > h) { // 가로의 값이 더 클 때
            longs.push(w);
            shorts.push(h);
        } else { // 세로의 값이 더 클 때
            longs.push(h);
            shorts.push(w);
        }
    }
    
    let longMax = Math.max(...longs);
    let shortMax = Math.max(...shorts);
    
    return longMax * shortMax;    
}
  1. 긴 길이와 짤은 길이를 저장한 변수 선언 (longs, shorts)
  2. for문 사용하여 sizes 배열 내 원송 접근하여 조건에 맞는 변수에 값을 넣어줌
  3. Math.max를 사용하여 각 변수 (longs, shorts)에서 가장 큰 값을 찾아와서 곱해준 값을 return

 

다른 풀이

같이 문제를 푼 조원의 코드의 가독성이 더 좋아서 기록으로 남김 (성능 차이 X)

function solution(sizes) {
    // 큰길이가 뒤 작은게 앞으로 가는 배열로 변화
    // 이때 각 열의 최대값의 곱이 최대 넓이
    var answer = 0;

    // 정렬
    sizes.forEach((item)=>{
    item.sort((a,b)=>a-b);
    })

    //각열의 최대값
    let width = Math.max(...sizes.map((a)=>a[0]));
    let heigh = Math.max(...sizes.map((a)=>a[1]));
}
728x90