알고리즘 테스트 ⏲/프로그래머스 [프로그래머스] 연속된 부분 수열의 합 풀이 / JavaScript - 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작성 코드 (1차 시도 / 통과) function solution(sequence, k) { let [l, r] = [0, 0] let summed = sequence[l] // 현재 쌓여있는 합 (l~r위치 값의 합) const candidate = [] // 답안 후보 while (r < sequence.length) { if (summed < k) summed += sequence[++r] // 합이 k보다 작으면 r이동 else if (summed > k) summed -= sequence[l++] // 합이 k보다 크면 l이동 else { // 합이 k라면 후보에 넣고 r과 l이동 candidate.push([l, r]) summed += sequence[++r] summed -= sequence[l++] } } // 후보 중 가장 차가 적은 것을 리턴 return candidate.sort((a, b) => (a[1] - a[0]) - (b[1] - b[0]))[0] } 구현 로직(투 포인터) 1. 시작 위치 값 지정 l = 0, r = 0 2. summed에 초기 값 넣기 3. summed의 값에 따라 포인터 이동 3-1. summed가 k보다 작으면(값을 추가해줘야 하므로) -> r포인터 이동 3-2. summed가 k보다 크면(값을 뺴줘야 하므로) -> l포인터 이동 3-3. summed가 k라면 후보에 넣고 이미 방문한 자리이므로 l과 r각각 이동 4. 후보 중 인덱스 차가 가장 적은 것을 리턴 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기yjglab 저작자표시 Contents 당신이 좋아할만한 콘텐츠 [프로그래머스] 혼자 놀기의 달인 풀이 / JavaScript 2023.04.14 [프로그래머스] 시소 짝꿍 풀이 / JavaScript 2023.04.14 [프로그래머스] 행렬 테두리 회전하기 풀이 / JavaScript 2023.04.12 [프로그래머스] 우박수열 정적분 풀이 / JavaScript 2023.04.10 댓글 0 + 이전 댓글 더보기