๐Ÿ•๏ธ ICPC Sinchon/Two Pointer

[BOJ][C++] ๋ฐฑ์ค€ 1806๋ฒˆ: ๋ถ€๋ถ„ํ•ฉ

์„ ๋‹ฌ 2024. 8. 28. 05:39
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1806

 

๋ฌธ์ œ

10,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๊ธธ์ด N์งœ๋ฆฌ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜์—ด์—์„œ ์—ฐ์†๋œ ์ˆ˜๋“ค์˜ ๋ถ€๋ถ„ํ•ฉ ์ค‘์— ๊ทธ ํ•ฉ์ด S ์ด์ƒ์ด ๋˜๋Š” ๊ฒƒ ์ค‘, ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N (10 ≤ N < 100,000)๊ณผ S (0 < S ≤ 100,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜์—ด์˜ ๊ฐ ์›์†Œ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ตœ์†Œ์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์ผ ๊ทธ๋Ÿฌํ•œ ํ•ฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด 0์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

ํ’€์ด

// ํ’€์ด : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, s;
    cin >> n >> s;
    vector<int>v(n);
    for(int i=0; i<n; i++) {
        cin >> v[i];
    }
    
    int ans = n+1;
    int start=0, end=0;
    int tmp = v[start];
    while(start<=end && end<n) {
        if(tmp>=s) {
            ans = min(ans, end-start+1);
            tmp -= v[start];
            start++;
        } else {
            end++;
            tmp += v[end];
        }
    }
    
    if(ans==n+1) {
        ans = 0;
    }
    
    cout << ans;
    
    return 0;
}
๋ฐ˜์‘ํ˜•