HackerRank - Mini-Max sum

세나정·2023년 5월 17일
0

문제

풀이

쉬운 문제라서 그냥 바로 인덱스로 접근하여 풀 수도 있지만 결과를 보는 것이 아닌 어떻게 접근하는가를 보는 테스트이기 때문에 최대한 시간 복잡도를 고려한 에러처리를 진행하며 풀 것이다.

function miniMaxSum(arr) {
	arr = arr.sort( (a,b) => a-b )
    
    let sum = arr.reduce( (a,c) => a+=c, 0) 
    
    let minSum = sum - arr[arr.length-1]
    let maxSum = sum - arr[0]
    
    console.log(minSum, " ", maxSum)
}

arr의 길이는 5로 고정이므로 reduce를 통해 전체합을 구해준 다음
min은 가장 끝의 인덱스를 뺀 4개의 합이고
max는 가장 처음의 인덱스를 뺀 4개의 합을 통해 값을 구한 후 출력한다.

전체코드

'use strict';

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', function(inputStdin) {
    inputString += inputStdin;
});

process.stdin.on('end', function() {
    inputString = inputString.split('\n');

    main();
});

function readLine() {
    return inputString[currentLine++];
}

/*
 * Complete the 'miniMaxSum' function below.
 *
 * The function accepts INTEGER_ARRAY arr as parameter.
 */

function miniMaxSum(arr) {
    // Write your code here
    arr = arr.sort( (a,b) => a-b )
    
    let sum = arr.reduce( (a,c) => a+=c, 0) 
    
    let minSum = sum - arr[arr.length-1]
    let maxSum = sum - arr[0]
    
    console.log(minSum, maxSum)

}

function main() {

    const arr = readLine().replace(/\s+$/g, '').split(' ').map(arrTemp => parseInt(arrTemp, 10));

    miniMaxSum(arr);
}
profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글