랜덤한 정수로 이루어진 배열을 주고 i 번째의 인덱스의 값이 i 이후의 인덱스의 값보다 클 경우 그 차이를 배열로 저장하여 return 하는 문제이다.
ex)
Input: prices = [8,4,6,2,3]
Output: [4,2,4,2,3]
var finalPrices = function(prices) {
//배열 복사
const result = [...prices];
for(let i=0; i<prices.length; i++){
for(let j=i+1; j<prices.length; j++){
//이후의 값이 더 작을경우
if(prices[j] <= prices[i]){
//차이의 값을 대입
result[i] = prices[i] - prices[j];
break;
}
}
}
return result;
};
값이 문자로 이루어진 배열을 주고 문자에 따라 다른 연산을 처리하여 그 결과값들의 합을 return하는 문제이다.
ex)
Input: ops = ["5","2","C","D","+"]
Output: 30
var calPoints = function(operations) {
let arr = []
while(operations.length != 0){
//맨 앞의 값을 가져옴
let currnet = operations.shift()
//맨 마지막 값 제거
if(currnet === 'C'){
arr.pop()
}else if(currnet === 'D'){
//맨 마지막 값 * 2 를 push
arr.push(arr[arr.length - 1] * 2)
}else if(currnet === '+'){
//최근의 두 값을 더해서 push
arr.push(arr[arr.length - 1] + arr[arr.length - 2])
}else{
//연산값이 아닐경우 push
arr.push(Number.parseInt( currnet))
}
}
//배열의 총 합을 return
return arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
};