Arithmetic Slices

유승선 ·2023년 1월 22일
0

LeetCode

목록 보기
75/121

비교적 쉬운 문제를 풀었고 어렵지는 않았지만 그냥 푸는 방식이 전이랑 조금 달라서 이런 방법도 있구나~ 꺠달았던 문제다. 이 문제는 i-1 그리고 i-2의 차이가 같다면은 카운트를 늘리는 문제다. 이 문제가 Stock 문제랑 뭐가 다를까 하고 계속 생각해봤는데 결국 겹치는 구간을 계속해서 잡아주는 공통점이 있었기에 어떤 곳을 공통점으로 잡아줄까 고민하면서 문제를 풀었다.

먼저, i-1 그리고 i-2의 차이를 본 다음에 만약 숫자를 늘릴일이 있으면 바로 전 구간에서 +1을 해주고 Res 값에 더해줌으로 누적되는 최고값을 얻을 수 있었다. 이 문제는 Sliding window 형식으로도 풀 수 있을거라 생각하는데 나중에 시간이 되면은 도전해봐야겠다.

class Solution {
    public int numberOfArithmeticSlices(int[] nums) {
        if(nums.length < 3) return 0; 
        int[] dp = new int[nums.length]; 
        dp[0] = 0; 
        dp[1] = 0; 
        int res = 0; 
        for(int i = 2; i < nums.length; i++){
            if(nums[i] - nums[i-1] == (nums[i-1] - nums[i-2])){
                dp[i] = dp[i-1] + 1; 
                res += dp[i]; 
            }
        }
        
        return res; 
    }
}
profile
성장하는 사람

0개의 댓글