leetcode

413. Arithmetic Slices Javascript

냠냠맨 2023. 1. 17. 16:50

⚡문제정보

3개 이상 일정한 값이 나오는 경우 카운트를 올려주면 되는데

까다로운 점이 1,2,3,4같은 경우엔 [1,2,3,4]도 같이 카운트를 해줘야합니다.

dp 유형 문제인걸 알고봐도 아직 능지가 부족해서 다른 분의 풀이를 참고했습니다.


🔍접근방법

[i-2] - [i-1] 과 [i-1] - [i]의 값이 같으면 문제의 요구조건에 맞는 케이스를 찾을 수 있을 것이다. 


🔍참고한 풀이

 
var numberOfArithmeticSlices = function(nums) {
    let dp = new Array(nums.length).fill(0)
    let answer = 0
    
    for(i=2 ; i<nums.length ; i++) {
        if(nums[i-2] - nums[i-1] == nums[i-1] - nums[i]) {
			dp[i] = 1 + dp[i - 1];
			answer += dp[i];
        }
    }
    return answer
};

nums.length 만큼의 dp 배열을 만들어줍니다.

if케이스에 걸렸을때 dp[i]에 1 + dp[i-1]값을 넣어주면

최초로 매칭되는 케이스일경우 -> 1 + 0 

[1,2,3,4]같이 답이 3나와야하는 경우

이전 dp에서 1이 할당되었으니 1+1 -> 2

 

발상이 대단하네요... 배웠읍니다

반응형