Final Prices With a Special Discount in a Shop & BaseBall Game

Guk's.velog·2024년 6월 25일
0

코딩테스트

목록 보기
19/22

문제 : Final Prices With a Special Discount in a Shop

랜덤한 정수로 이루어진 배열을 주고 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;
};

문제 : Baseball Game

값이 문자로 이루어진 배열을 주고 문자에 따라 다른 연산을 처리하여 그 결과값들의 합을 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);
};

0개의 댓글