반응형
문제
Replace Elements with Greatest Element on Right Side(요소를 오른쪽에서 가장 큰 요소로 바꾸기
문제 설명
반복문을 돌면서 차례대로 그 값 이후부터의 배열 값들로 최대값을 구해 배열을 다시 구성하는 문제입니다. 마지막에는 -1을 추가하여 개수가 같도록 만들면 끝입니다.
- 아래와 같이 치환되는 부분을 제외한 나머지 오른쪽을 가지고 최대값을 만듭니다. 배열에서
shift
를 사용하면 0번 값이 삭제됩니다. 여기서spread operator
를 이용해 max 값을 구해 줍니다. - 이 때 주의할 것은 shift를 사용했기 때문에 arr의 길이가 계속 변하게 되어 바로 사용하게 되면 result 배열의 개수가 모자라거나
-Infinity
값이 섞일 수 있습니다.
- 반복문을 다 돌고 마지막 요소에서는 오른쪽에 최댓값을 구할 수 있는 배열이 없습니다. 값이 잘못 들어가는 것을 막기 위해 반복문이 index보다 적게 돌도록 합니다.
- 그리고 -1은 문제에서 정해준 값이므로 return하기 전에 push해주면 됩니다.
성공 코드
const replaceElements = function(arr) {
let result = [];
const len = arr.length;
for (let i = 0; i < len - 1; i++) {
arr.shift();
const value = Math.max(...arr);
result.push(value);
}
result.push(-1);
return result;
};
반응형