🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.util.*;
class Solution {
public int[] solution(int[] sequence, int k) {
int[] answer = new int[] {0, sequence.length - 1};
int left = 0;
int right = 1;
int sum = sequence[0];
while(left < right) {
if(sum == k) {
change(right, left, answer);
sum -= sequence[left++];
}
else if(sum > k) {
sum -= sequence[left++];
}
else if(right < sequence.length) {
sum += sequence[right++];
}
else {
break;
}
}
return answer;
}
private static void change(int right, int left, int[] answer) {
if((right - 1 - left) < (answer[1] - answer[0])) { // 기존 left와 right 길이보다 짧다면 갱신
answer[0] = left;
answer[1] = right - 1;
}
}
}
|
cs |
🧩 해결 아이디어
• 투 포인터
- 시간 복잡도 : O(N)
💥 유의사항
right가 배열 마지막 인덱스보다 커지더라도 멈추면 안 됨.
left가 줄어들면서 sum과 k가 같아지는 구간이 있을 수 있으므로.
🔺 다른 풀이들
- 정렬도 하셨고...
[Java] 연속된 부분 수열의 합 - Lv2 프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
mag1c.tistory.com
- 복습은 이것으로...
[프로그래머스 Level 2] 연속된 부분 수열의 합 (Java)
https://school.programmers.co.kr/learn/courses/30/lessons/152996문제 설명비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다.기존 수열에서 임의의 두 인덱스의 원
velog.io
- 약간 내가 생각했던 풀이와 가장 비슷함. Comparable compareTo로 정렬하셨다.
프로그래머스 - 연속된 부분 수열의 합(Java)
투포인터 문제입니다. 투포인터란, 두 가지의 포인터를 사용해 배열에서 조건과 일치하는 연속된 부분을 찾을 수 있는 방법입니다. 조건에 맞춰 서로 다른 두 가지의 포인터를 움직여야 합니다.
ksb-dev.tistory.com
💬 느낀 점
투 포인터 문제 50만년만에 봐서 이거 쓸 생각도 못 했다...
다시 알고리즘의 세계로...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[프로그래머스] 연속된 부분 수열의 합 Lv2 JAVA [투포인터][엄탱]
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.
tang25.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 2] 삼각 달팽이 (JAVA) (0) | 2023.11.12 |
---|---|
[프로그래머스/Lv. 2] 롤케이크 자르기 (JAVA) (0) | 2023.10.30 |
[프로그래머스/Lv. 1] 대충 만든 자판(JAVA) (0) | 2023.10.26 |
[프로그래머스/Lv. 2] [1차] 캐시 (JAVA) (0) | 2023.10.25 |
[프로그래머스/Lv. 3] 여행경로 (JAVA) (0) | 2023.10.25 |