728x90

문제

나의 풀이

function solution(sizes) {
    var answer = 0;
    let width = 0;
    let height = 0;
    for (let i = 0; i < sizes.length; i++)
        {
            if(sizes[i][0] < sizes[i][1])
                {
                    let temp = sizes[i][0]
                    sizes[i][0] = sizes[i][1]
                    sizes[i][1] = temp;
                }
        }
    
    for (let i = 0; i< sizes.length; i++)
        {
            if(width < sizes[i][0])
                {
                    width = sizes[i][0]
                }
            
            if(height < sizes[i][1])
                {
                    height = sizes[i][1]
                }
        }
    
    answer = width * height;
    
    return answer;
}

설명

우선 가로 세로중 큰 값이 고정적으로 가로로 오게 하기 위해서 처음 for문을 써줬다. sizes[i][0] => i번째의 가로라는 뜻

그렇게하여서 가로로 값을 고정시키고 width와 height 변수를 만들어서 sizes[i][0] 현재의 가로보다 작을경우 width를 적용 시키고 height도 마찬가지로 따로 적용시켜 가로와 세로의 최대 길이를 구한다음 둘을 곱해줘 문제를 해결하였다.

 

다른사람의 풀이

function solution(sizes) {
    const rotated = sizes.map(([w, h]) => w < h ? [h, w] : [w, h]);

    let maxSize = [0, 0];
    rotated.forEach(([w, h]) => {
        if (w > maxSize[0]) maxSize[0] = w;
        if (h > maxSize[1]) maxSize[1] = h;
    })
    return maxSize[0]*maxSize[1];
}

보고 되게 깔끔하다고 느껴졌던 코드이다. 우리가 for문을 써서 뒤집기를 힘들게 하였을때 map을 사용하여서 w 가로가 세로보다 작을시 [h, w]를 해서 위치를 바꿔주고 아닐시 [w, h]를 사용하여서 그대로 진행하게 하여서 가로 세로 정렬을 하였고, forEach를 적용시켜서 w와 h의 사이즈를 각각 구해주었다.

map과 foreach에 대한 이해가 되어있지만 응용이 안되기 때문에 학습이 조금더 필요하다고 느꼈다.