안녕하세요 미어캣입니다.
오늘은 프로그래머스 기초문제 마지막 두 원소 문제를 풀어보도록 하겠습니다.
문제설명 :
정수 리스트 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로 쉽게 문제를 해결할
수 있습니다.
감사합니다. 파이팅...!
'Web, View > 코딩테스트 연습' 카테고리의 다른 글
[JavaScript] 글자 이어 붙여 문자열 만들기 - 181915 (0) | 2023.12.12 |
---|---|
[JavaScript] 카운트 업 - 181920 (0) | 2023.12.11 |
[JavaScript] 원소들의 곱과 합 - 181929 (1) | 2023.12.07 |
[JavaScript] flag에 따라 다른 값 반환하기 - 181933 (2) | 2023.12.06 |
[JavaScript] 홀짝에 따라 다른 값 반환하기 - 181935 (2) | 2023.12.06 |