ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 1806๋ฒˆ ๋ถ€๋ถ„ํ•ฉ
    SW Test/BaekJoon 2021. 8. 22. 20:46
    ๋ฐ˜์‘ํ˜•
    • ์ด ๋ฌธ์ œ๋Š” C/C++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

     

    ์˜ˆ์‹œ

     

    ํ’€์ด

    • ๋ถ€๋ถ„ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ 3์ค‘ for๋ฌธ์„ ์ด์šฉํ•ด์„œ ํ•˜๋‚˜์”ฉ ๋ง์…ˆ์„ ํ•˜์—ฌ s๋ฅผ ๋„˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ถ„ํ•ฉ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ๊ธˆ ๋ฐฐ์šฐ์‹  ๋ถ„์ด๋ผ๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด๋‹น ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์›์†Œ๋“ค์˜ ํ•ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ดํ›„ 2์ค‘ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ sum(j) - sum(i)๊ฐ€ s๊ฐ€ ๋„˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ N์˜ ํฌ๊ธฐ๋Š” 10๋งŒ์ด๋ผ O(n2)์ด์—ฌ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํˆฌ ํฌ์ธํ„ฐ ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํˆฌ ํฌ์ธํ„ฐ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด O(N)์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    int main(){
        int arr[100000];
        int n,len;
        cin>>n>>len;
    
        for(int i=0;i<n;i++){
            cin>>arr[i];
        }
    
        int result = 1000000;
        int value = arr[0];
        int s = 0;
        int e = 0;
        while(s!=n && e!=n){
            if(value>=len){
                result = min(result, e-s+1);
                value-=arr[s++];
            }else{
                value+=arr[++e];
            }
        }
        if(result == 1000000){
            result = 0;
        }
        cout<<result;
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.