본문 바로가기
LeetCode

2011. Final Value of Variable After Performing Operations

by 싼쵸 2022. 5. 25.
반응형

오늘도 활기차게 복기해보자

 

문제

설명

X에 +가 있으면 + 1 이고 -가 있으면 -1 이다.  최종적으로 계산을 다하면  결과 값을 구하는 문제다.

 

현재 풀이

/**
 * @param {string[]} operations
 * @return {number}
 */
var finalValueAfterOperations = function(operations) {
    let cnt = 0;
    for(let i of operations){
        i.indexOf('+') > -1  ? cnt++ : cnt--;
    }
    return cnt
};

indexOf를 활용해서 '+'가 있으면 무조건 -1 보다 큰 숫자가 나오기때문에 cnt++ 해주었고, -1이나오면 -이기에 cnt--를 해주었다.

 

예전 풀이

/**
 * @param {string[]} operations
 * @return {number}
 */

  let x = 0;
var finalValueAfterOperations = function(operations) {
let sum = 0;

let newArr = operations.map(e => e.indexOf('+',1))

const reducer = (prev, curr)=> prev + curr;
   return newArr.reduce(reducer)
  
};

아마도 내가 푸는 데 실패하고, 다른사람의 풀이를 보고 이해한 코드같다. 나도 아직까지 이렇게 나누어서 풀지는 않으니까 ㅎㅎ

그래도 일단 설명하자면 map 과 indexOf를 활용해서 새배열을 만들었다. 그리고 약간 보면서 갸우뚱 한 부분은 1번으로 인덱스 번호를 지정한 것이다. 이 부분은 조금 더 생각해보면 이해가 간다. x가 보면 맨앞에 있거나 아니면 맨뒤에 있다. 그래서 항상 중간인 1번 인덱스를 x는 절대 오지않고 무조건 + 아니면 - 가 온다.

마지막으로 reducer 함수를 다 계산을 한 후 결과값을 리턴한다.

 

다른 사람 풀이

const finalValueAfterOperations = (operations) => operations.reduce((acc, curr) => curr[1] === "+" ? ++acc : --acc, 0)

참 언제나 그렇지만 다른 사람풀이를 어떻게 이렇게 생각할지 있지 라는 생각을 먼저하게 된다 ㅎㅎ

이번 풀이는 reduce 를 활용해 풀이했다. acc는 누산을 나타내는 인자 값이고, curr은 현재 값이다. 그래서 현재값의 인덱스 1번을 가지고 삼항연산자를 사용해서 값을 구하는 식이다.

 

 

 

반응형

'LeetCode' 카테고리의 다른 글

1512. Number of Good Pairs  (0) 2022.05.28
1672. Richest Customer Wealth  (0) 2022.05.26
1480. Running Sum of 1d Array  (0) 2022.05.17
1920. Build Array from Permutation  (0) 2022.05.16
1929. Concatenation of Array  (0) 2022.03.20

댓글