728x90
반응형
목차
https://www.acmicpc.net/problem/1806
1806번: 부분합
첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.
www.acmicpc.net
문제
보기 전에 참고하면 좋을 것 같습니다..
https://be-senior-developer.tistory.com/36
[투 포인터] c++구현 및 백준 2003 예제 설명
목차 투 포인터 알고리즘 정의 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘 정렬되어있는 두 리스트의 합집합에도 사용됨. 병합정렬(merge sort)의 coun
be-senior-developer.tistory.com
코드 구현
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
vector<int> arr;
int main() {
int N, S, i, num, ans =1000001, s=0, e=0, sum=0;
cin >> N >> S;
for (i = 0; i < N; i++) {
cin >> num;
arr.push_back(num);
}
while (s < N) {
if (sum < S) {
if (e != N ) { // 종착점이 끝에 도달 시
sum += arr[e];
e++;
}
else { // 합이 목표값보다 작은 경우 종착점 증가
sum -= arr[s];
s++;
}
}
else { //합이 목표값보다 크거나 같은 경우 시작점 증가
sum -= arr[s];
s++;
}
if (sum >= S) //합이 S이상인 경우
{
ans = min(ans, e - s); //최솟값 갱신
}
}
if (ans == 1000001) //갱신이 안됬을 경우 0출력
cout << 0;
else
cout << ans;
}
반응형
'백준 문제풀이' 카테고리의 다른 글
[백준][이분 탐색] 1484 다이어트 c++구현 (0) | 2024.03.14 |
---|---|
[백준][구현] 14719 빗물 c++구현 (0) | 2024.03.13 |
[백준][이진 탐색] 1654 랜선 자르기 c++구현 및 설명 (0) | 2024.02.27 |
[백준][bfs] 1967 트리의 지름 c++ 구현 (0) | 2024.02.24 |
[백준][다익스트라] 1916 최소비용 구하기 c++ 구현 (0) | 2024.02.23 |