Web, View/코딩테스트 연습

[JavaScript] 마지막 두 원소 - 181927

kaleb 2023. 12. 7. 16:41
728x90

안녕하세요 미어캣입니다.

 

오늘은 프로그래머스 기초문제 마지막 두 원소 문제를 풀어보도록 하겠습니다.

 

문제설명 :

정수 리스트 num_list가 주어질 때, 마지막 원소가 그 전 원소보다 크면 마지막 원소에서 그 전 원소를 뺀 값을,

마지막 원소가 그 전 원소봐 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성하시오.

 

제한사항 :

2 <= num_list의 길이 <= 10

1 <= num_list의 원소 <= 9

 

문제 :

function solution(num_list) {
    var answer = [];
    return answer;
}

 

설명이 조금 말 장난 같기도 하지만 

 

정수 리스트가 있을 때 리스트의 마지막 원소, 마지막원소 앞의 원소만 접근 가능하다면 쉽게 해결 할 수 있는 문제입니다.

 

정답 : 

더보기
const solution = (arr) => {
    
    let len = arr.length; // 리스트의 길이
    let end = arr[len - 1]; // 마지막 원소
    let endBefore = arr[len - 2]; // 그 전 원소
    
    if(len>=2 && len <= 10) { // 제한사항
        
        if(end > endBefore) { // 마지막원소가 그 전 원소보다 클 경우
            arr.splice(len, 1, end-endBefore);
            return arr;
        
        } else { // 마지막 원소가 그 전 원소보다 작을 경우
            arr.splice(len, 1, (end*2));
            return arr;
        }
    }
}

 

정수 리스트 앞에 접근하는 방법은 굉장히 다양하게 있습니다.

 

저는 이후 로직에서 편하게 변수에 값을 할당 받고 진행을 했는데요.

 

let tmp = arr.slice(arr.length-2, arr.length);

 

이런식으로 slice를 통해서 배열형식으로 마지막, 마지막 전 원소를 받아서 사용할 수 도 있습니다.

 

원소에 접근만 한다면 나머지는 분기처리 이후 splice를 통해서 함수를 통해서 기존의 배열을 수정할 수 있습니다.

 

Array.splice(startIdx, deleteCount, item1, item2...) :

 

JavaScript의 splice는 배열을 수정하고 필요에 따른 요소를 추가하거나 제거할 수 있는 메서드로,

 

startIdx : 수정을 시작할 idx,

deleteCount : 제거할 요소의 개수,

item1... : 추가할 요소

 

의 방식으로 사용 할 수 있습니다.

 

마지막, 마지막 전 원소의 크기 비교에 따라 기존의 배열에 값을 추가해야하기 때문에 splice로 쉽게 문제를 해결할

 

수 있습니다.

감사합니다. 파이팅...!

반응형