Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

나 개발자 할래요

[JS]최소직사각형 본문

개발자 되는 법.../코딩테스트...

[JS]최소직사각형

개발_자 2024. 7. 8. 14:36

 

 

 

function solution(sizes) {
    let arr = sizes.map(sizes => sizes[0] > sizes[1] ? [sizes[0], sizes[1]] : [sizes[1], sizes[0]]);
    let width = [];
    let height = [];
    for(let i = 0; i < arr.length; i++) {
        width.push(arr[i][0]);
        height.push(arr[i][1]);
    } 
    return Math.max(...width) * Math.max(...height);
}
let arr = sizes.map(sizes => sizes[0] > sizes[1] ? [sizes[0], sizes[1]] : [sizes[1], sizes[0]]);

 

`sizes` 배열의 각 요소는 `[width, height]`형식의 배열

 

`map` 메서드를 사용하여 각 명함의 가로와 세로 크기를 비교한 후

=> 큰 값을 첫 번째 요소로, 작은 값을 두 번째 요소로 하는 새로운 배열을 만듦

 

모든 명함의 크기가 `[큰 값, 작은 값]` 형태의 배열 `arr`에 저장

 

 

 

`map` 메서드

array.map(callback(currentValue, index, array), thisArg)

 

calback : 새로운 배열 요소를 생성하는 함수

(이 함수는 각 요소에 대해 한 번 호출됨)

currentValue : 처리할 현재 요소

index (선택 사항) : 처리할 현재 요소의 인덱스

array (선택 사항) : `map` 메서드를 호출한 배열

thisArg (선택 사항) : calback 함수 내부에서 `this`로 사용할 값

 

let width = [];
let height = [];
for(let i = 0; i < arr.length; i++) {
    width.push(arr[i][0]);
    height.push(arr[i][1]);
}

 

`widh`와 `height`라는 두 개의 빈 배열을 만듦

 

`arr` 배열을 순회하면서

각 명함의 가로 크기를 `width` 배열에, 세로 크기를 `height` 배열에 추가

 

`Math.max` 함수를 사용하여

`width`배열에서 가장 큰 값과 `height`배열에서 가장 큰 값 찾음

 

이 두 최대값을 곱하여 모든 명함을 담을 수 있는 가장 작은 지갑의 크기 반환

 

다른 사람 풀이

function solution(sizes) {
    const [hor, ver] = sizes.reduce(([h, v], [a, b]) => [Math.max(h, Math.max(a, b)), Math.max(v, Math.min(a, b))], [0, 0])
    return hor * ver;
}

 

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];
}

 

'개발자 되는 법... > 코딩테스트...' 카테고리의 다른 글

[JS] 숫자 문자열과 영단어  (0) 2024.07.10
[JS] 시저 암호  (0) 2024.07.10
[JS] 크기가 작은 부분 문자  (1) 2024.07.05
[JS] 삼총사  (0) 2024.07.04
[JS] 이상한 문자 만들기  (0) 2024.07.04