반응형
오늘도 활기차게 복기해보자
문제
설명
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 |
댓글