728x90
반응형
https://www.acmicpc.net/problem/2003
1. Logic
- 인덱스를 가르키는 두개의 포인터 변수(start, end)를 선언 한 뒤 원하는 수보다 sum이 작으면 다음 배열로 end를 옮기고 vec[end] 더해주고 크면 vec[start]를 빼주고 start 포인터를 하나 더해준다.
해당 문제는 투포인터를 설명하면서 똑같이 풀이해놨으니 투포인터를 잘 모른다면 다음 글을 참고하면 좋을 것 같다!
https://go2gym365.tistory.com/48
2. Code
#include<bits/stdc++.h>
using namespace std;
vector<int> vec;
int main() {
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++) {
int a;
cin >> a;
vec.push_back(a);
}
int cnt = 0;
int end = 0;
int start = 0;
int sum = vec[0];
while(end < n) {
if(sum < m) {
end++;
sum += vec[end];
}
else if(sum == m) {
end++;
sum += vec[end];
sum -= vec[start];
start++;
}
else if(sum > m) {
sum -= vec[start];
start++;
}
}
cout << cnt;
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 7570 줄세우기 C++ :: Dynamic Programming (0) | 2023.08.23 |
---|---|
[백준/Baekjoon] 2470 두 용액 C++ :: Two pointers (0) | 2023.08.21 |
[백준/Baekjoon] 1806 부분합 C++ :: two pointers (0) | 2023.08.21 |
[백준/Baekjoon] 2573 빙산 C++ :: BFS (0) | 2023.08.20 |
[백준/Baekjoon] 9465 스티커 C++ :: Dynamic Programming (0) | 2023.08.19 |