[JavaScript]K個


すべての問題を表示
https://programmers.co.kr/learn/courses/30/lessons/42748?language=javascript

私の答え

function solution(array, commands) {
    var answer = [];
    let arr = [];
    let command = [];
    
    for (const arrItem of array) {
        arr.push(arrItem);
    };

    for (const commandItem of commands) {
        command.push(commandItem);
    };
    
    for(let i = 0; i < command.length; i++) {
        let commandI = command[i][0];
        let commandJ = command[i][1];
        let commandk = command[i][2];
        let arrCut = (arr.slice(commandI - 1, commandJ)).sort((a, b) => a - b);

        answer.push(arrCut[commandk - 1]);
    }
    
    return answer;
}

シール


最初の試みはテストケース2に合格しなかった.
sort()については,辞書式ソート(ex.[1,3,10,2]=>[1,10,2,3])が行われ,この部分が問題となっている.
昇順ソートに変更した後、すべてのテストケースに合格しました.

解決方法-昇順降順でソート

const numbers = [15, 52, 23, 11, 9]; 

// 오름차순 정렬, 원본 배열 수정 
numbers.sort((a, b) => a - b); console.log(numbers); // [9, 11, 15, 23, 52] 

// 내림차순 정렬, 원본 배열이 다시 수정 
numbers.sort((a, b) => b - a); console.log(numbers); // [52, 23, 15, 11, 9]

// 출처: https://hohoya33.tistory.com/139 [개발 메모장]

他人の解釈を分析する


1番

function solution(array, commands) {
    return commands.map(command => {
        const [sPosition, ePosition, position] = command
        const newArray = array
            .filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
            .sort((a,b) => a - b)    
    
        return newArray[position - 1]
    })
}

// 출처: https://programmers.co.kr/learn/courses/30/lessons/42748/solution_groups?language=javascript&type=all

2番

function solution(array, commands) {
    return commands.map(v => {
        return array.slice(v[0] - 1, v[1]).sort((a, b) => a - b).slice(v[2] - 1, v[2])[0];
    });
}

// 출처: https://programmers.co.kr/learn/courses/30/lessons/42748/solution_groups?language=javascript&type=all