티스토리 뷰

문제 첫인상

처음엔 회전에 대해서 구구절절 설명하길래 엄청 어려운 문제인 줄 알고 지레 겁을 먹었다.

그러나 전체적으로 읽고 해당 문제를 어떻게 풀지 생각할 시간을 가졌는데, 단순하게 최댓값을 활용하면 될 것 같았다.

자바스크립트로 문제 푸는 게 처음이라 코드 작성이 낯설게 느꼈던 듯 하다.

 

풀이 방법 1.

1) 각 원소(배열) 내에서 큰 값을 최댓값으로 저장한다.

2) 각 원소를 돌면서 최댓값과 해당 원소의 큰 값을 비교하여, 더 큰 걸 최댓값으로 재할당한다.

3) 각 원소(배열) 내에서 작은 값은 최솟값과 비교하여 더 큰 걸 최솟값으로 재할당한다.

즉, 긴 변들 중 가장 긴 값과 짧은 변들 중 가장 긴 값을 구해 곱한다.

 

풀이 1. 최댓값

function solution(sizes) {
    let maxSideValue = 0;
    let minSideValue = 0;
    
    for(let i=0; i<sizes.length; i++) {
        let w = sizes[i][0];
        let h = sizes[i][1];

        let biggerValue = Math.max(w, h);
        let smallerValue = Math.min(w, h);
        
        maxSideValue = Math.max(biggerValue, maxSideValue);
        minSideValue = Math.max(smallerValue, minSideValue);
        
        console.log(`max: ${maxSideValue}, min: ${minSideValue}`);
    }
    return maxSideValue * minSideValue;
}

 

 

풀이 방법 2. for, if

풀이 1과 같지만, 두 값을 비교할 때 Math.max 대신 if로 분기한다.

 

풀이 코드 2. for, if

function solution(sizes) {
    let maxValue = 0;
    let minValue = 0;
    
    for (let size of sizes) {
        let weight = size[0];
        let height = size[1];
        
        if (weight > height) {
            if (weight > maxValue) {
                maxValue = weight
            }
            if (height > minValue) {
                minValue = height
            }
        } else {
            if (height > maxValue) {
                maxValue = height
            }
            if (weight > minValue) {
                minValue = weight
            }
        }
    }
    return maxValue * minValue;
}

 

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

 

프로그래머스

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

programmers.co.kr

 

댓글