본문 바로가기
Coding Test/Programmers

[Programmers] Lv 2. 연속된 부분 수열의 합

by song.ift 2023. 4. 7.

https://school.programmers.co.kr/learn/courses/30/lessons/178870#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function solution(sequence, k) {
    let [s, e, sum] = [0, 0, sequence[0]];
    const answer = [];

    while (s < sequence.length - 1) {
        if ([sequence[s], sequence[e]].every((v) => v === k)) return [s, e];

        // (알고리즘 패턴) 슬라이딩 윈도우 패턴
        // 값이 크면 ++s(앞제거), 값이 작으면 ++e(뒤추가), 정답이면 ++s, ++e
        if (sum >= k || e >= sequence.length - 1) (sum -= sequence[s]), ++s;
        else if (sum <= k && e < sequence.length - 1) ++e, (sum += sequence[e]);

        if (sum == k) answer.push([s, e]);
    }

    return answer.sort(([a, b], [c, d]) => (b - a) - (d - c))[0];
}

GitHub : https://github.com/developeSHG/Algorithm-Baekjoon_Programmers/blob/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/unrated/178870.%E2%80%85%EC%97%B0%EC%86%8D%EB%90%9C%E2%80%85%EB%B6%80%EB%B6%84%E2%80%85%EC%88%98%EC%97%B4%EC%9D%98%E2%80%85%ED%95%A9/%EC%97%B0%EC%86%8D%EB%90%9C%E2%80%85%EB%B6%80%EB%B6%84%E2%80%85%EC%88%98%EC%97%B4%EC%9D%98%E2%80%85%ED%95%A9.js

 

GitHub - developeSHG/Algorithm-Baekjoon_Programmers: 백준 and 프로그래머스 소스코드

백준 and 프로그래머스 소스코드. Contribute to developeSHG/Algorithm-Baekjoon_Programmers development by creating an account on GitHub.

github.com

 

댓글