[C++] BOJ 1806 - ๋ถ๋ถํฉProblem Solving/Baekjoon Online Judge (BOJ)2025. 4. 10. 22:08
Table of Contents

01. ๐ ๋ฌธ์ ํ์
N: ์์ด์ ๊ธธ์ด
S: ๋ถ๋ถ ์์ด์ ํฉ์ ๋น๊ตํ๊ธฐ ์ํ ๊ธฐ์ค์ด ๋๋ ์์น
์์ด์ 10,000 ์ดํ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง
* ๋ถ๋ถ ์์ด์ ํฉ์ด S์ด์์ด ๋๋ ๊ฒ ์ค, ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅ
01-1. ๊ฐ๋ฅํ ์๊ฐ ๋ณต์ก๋
- ์๊ฐ ์ ํ 0.5์ด๋ก ์๊ฐ ๋ณต์ก๋ O(NlogN) ์ดํ๋ก ๊ตฌํ ๊ฐ๋ฅ
01-2. ์๊ณ ๋ฆฌ์ฆ ์ ํ
- ๋ชจ๋ ๋ถ๋ถ ํฉ์ ์ดํด๋ด์ผ ํ๋ฏ๋ก, ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉ
- ๊ฐ ๋ฒ์์ ๋ํด ์ฒ์๋ถํฐ ๊ณ์ ๋ํด์ค ๊ฒฝ์ฐ, ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๊ฐ O(N^2) ์ด ๋ ์ ์์
- ๋๋ฌธ์, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฅผ ์ด์ฉํ์ฌ ํฉํ๋ฉด, ์๊ฐ ๋ณต์ก๋ O(N)์ด ๋ณด์ฅ
02. ๐ ์ฝ๋ ์ค๊ณํ๊ธฐ
- ์์ด์ ๊ธธ์ด N๊ณผ ๋น๊ต ๊ธฐ์ค์ด ๋๋ ์ S๋ฅผ ์ ๋ ฅ
- ๊ธธ์ด N๋งํผ์ ์์ด์ ์ ๋ ฅ
- start์ end๋ฅผ 0์ผ๋ก ์ด๊ธฐํ
- sum์ end๋ฅผ ๊ณ์ 1์ฉ ์ฆ๊ฐ์ํค๋ฉฐ, end๋ฒ์งธ์ ์๋ ๊ฐ์ ๊ณ์ํด์ ๋์
- sum์ด S์ ๊ฐ๊ฑฐ๋ ์ปค์ก์ ๋, ํ์ฌ ์ ์ฅ๋ ๊ฒฐ๊ณผ์ sum์ ๋น๊ตํ์ฌ ๋ ์์ ๊ฐ์ ์ ์ฅ
- sum์ด S๋ณด๋ค ์ปค์ก์ผ๋ฏ๋ก, start๋ฅผ 1์ฆ๊ฐ
- end๊ฐ N์ ๋๋ฌํ ๋๊น์ง 4-6 ๊ณผ์ ์ ๋ฐ๋ณต
03. ๐ ๏ธ ์๋๋ณ ์์
1ํ์ฐจ
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฐฉ์์ ๋ชฐ๋ผ์, 2์ค for๋ฌธ ๋๋ ธ๋ค๊ฐ ์๊ฐ์ด๊ณผ..
04. ๐๏ธ ์ ๋ต ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ll N, S;
vector<ll> seq;
cin >> N >> S;
for(int i = 0; i < N; i++){
ll tmp;
cin >> tmp;
seq.push_back(tmp);
}
ll sum = 0;
int result = INT_MAX;
int start = 0;
for(int end = 0; end < N; end++){
sum += seq[end];
while(S <= sum){
result = min(result, end - start + 1);
sum -= seq[start++];
}
}
cout << (result == INT_MAX ? 0 : result) << "\n";
return 0;
}
'Problem Solving > Baekjoon Online Judge (BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C++] BOJ 2473 - ์ธ ์ฉ์ก (0) | 2025.04.12 |
|---|---|
| [C++] BOJ 1477 - ํด๊ฒ์ ์ธ์ฐ๊ธฐ (0) | 2025.04.11 |
| [C++] BOJ 8895 - ๋ง๋ ๋ฐฐ์น (0) | 2025.04.10 |
| [C++] BOJ 1562 - ๊ณ๋จ ์ (0) | 2025.04.09 |
| [C++] BOJ 2342 - Dance Dance Revolution (0) | 2025.04.08 |
@ONE_ :: ์ ํธ์
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์!