N

(Leet Code JS)Wiggle Subsequence 본문

Leet Code 알고리즘

(Leet Code JS)Wiggle Subsequence

naeunchan 2022. 7. 9. 19:53
728x90
반응형

https://leetcode.com/problems/wiggle-subsequence/

 

Wiggle Subsequence - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

주어진 배열에서 조건에 맞는 길이의 최대값을 찾아야 한다.

인접한 수의 차가 + - + - ... or - + - +... 면 된다.

 

answer = 1부터 시작하는데, 이는 0번째 값은 무조건 답이 될 수 있는 최소값이 되기 때문이다.

flag를 이용해 현재 값 차이가 양수인지, 음수인지 확인한다.

1 ~ nums.length 까지 for문을 순회.

처음에는 flag = 0이기 때문에 else문에 들어간다.

값 차이가 양수면 flag = 1, 음수면 flag = -1로 설정하고 answer++을 해준다.

(diff === 0이면 그냥 넘어가기 때문에 answer나 flag를 고치지 않는다.)

 

flag가 있다면, 다음 순서가 양수인지, 음수인지 설정해주면 된다.

flag === 1이고 현재 값 차이가 음수라면 answer++을 해주고 flag = -1로 설정.

flag === -1이고 현재 값 차이가 양수라면 answer++을 해주고 flag = 1로 설정.

 

이 외의 경우는 넘어가도 되기 때문에 따로 설정을 안해줘도 된다.

마지막은 answer을 리턴한다.

var wiggleMaxLength = function(nums) {
    let answer = 1;
    let flag = 0;
    
    for(let i = 1; i < nums.length; i++){
        const diff = nums[i] - nums[i - 1];
        
        if(flag){
            if(flag === 1 && diff < 0){
                answer++;
                flag = -1;
            } else if(flag === -1 && diff > 0){
                answer++;
                flag = 1;
            }
        } else{
            if(diff > 0){
                answer++;
                flag = 1;
            } else if(diff < 0){
                answer++;
                flag = -1;
            }
        }
    }
    
    return answer;
};
728x90
반응형

'Leet Code 알고리즘' 카테고리의 다른 글

(Leet Code JS)Game of Life  (0) 2022.07.30
(Leet Code JS)Candy  (0) 2022.07.10
(Leet Code JS)Maximum Units on a Truck  (0) 2022.07.09
(Leet Code JS)Furthest Building You Can Reach  (0) 2022.07.03
(Leet Code JS)Non-decreasing Array  (0) 2022.06.28