๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N,K,ans = 0; cin>>N>>K;
vector<int>arr, dp(2*N);
for(int i=0; i<N; i++){
int inp; cin>>inp;
arr.push_back(inp);
}
for(int i=0; i<N; i++){
arr.push_back(arr[i]);
}
dp[0] = arr[0];
for(int i=1; i<K; i++){
dp[i]=dp[i-1]+arr[i];
}
for(int i=K; i<2*N; i++){
dp[i]=dp[i-1]-arr[i-K]+arr[i];
ans = max(ans, dp[i]);
}
cout<<ans;
}
ํ์ด
์ด ๋ฌธ์ ์์ ๊ตฌํํ๋ฉด์ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋ ๊ฐ์ง์ ๋๋ค.
- ์ํ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
- ์ ๋ ฅ์ด 10๋ง๊น์ง ๋ค์ด์ค๊ธฐ ๋๋ฌธ์ O(N)์ผ๋ก ๊ตฌํํด์ผ ํ๋ค.
๋ฉ์ฒญํ๊ฒ๋ ์๊ฐ ์์ด ํ๋ค๊ฐ ๋ ๋ฒ์งธ ์ฌํญ์ ๊ณ ๋ คํ์ง ๋ชปํ๊ณ ์๋์ ๊ฐ์ด ๊ตฌํํ๋ค๊ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ด์ต๋๋ค.
#include <iostream>
#include <vector>
#define ll unsigned long long int
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int N,K,ans=0; cin>>N>>K;
vector<int>v;
for(int i=0; i<N; i++){
int inp; cin>>inp;
v.push_back(inp);
}
for(int i=0; i<v.size(); i++){
int temp = 0;
for(int k=0; k<K; k++){
int index = i+k;
if(i+k>v.size()-1) index = (i+k)%N;
temp+=v[index];
}
ans = max(temp,ans);
}
cout<<ans;
}
์ํ ๋ฐฐ์ด ๋ถ๋ถ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ๊ฐ ์๊ฐํ๊ธฐ์๋ ๋ ๊ฐ์ง์ ๋๋ค.
- ์ ์ฝ๋์ฒ๋ผ mod์ฐ์ฐ์ ์ฌ์ฉํ๋ค.
- ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ ์ถ๊ฐํ์ฌ 2*Nํฌ๊ธฐ๋ก ๋ง๋ ๋ค.
์๋ ์ ๋ต ์ฝ๋์์๋ ์ํ ๋ฐฐ์ด ๋ถ๋ถ์ 2๋ฒ์ผ๋ก ๊ตฌํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ O(N)์ผ๋ก ๊ตฌํํ๊ธฐ ์ํด ์ ํ์์ ๋ ์ฌ๋ ธ๋๋ฐ ํ์ด๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
์ ์ด๋ฏธ์ง์ ๊ฐ์ด dp[i] = dp[i-1] - arr[i - k] + arr[i]; ์ ์์ ๋์ถํด ๋ผ ์ ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1254๋ฒ - ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2022.03.26 |
---|---|
[๋ฐฑ์ค,c++] 4396๋ฒ - ์ง๋ขฐ ์ฐพ๊ธฐ (0) | 2022.03.26 |
[๋ฐฑ์ค,c++] 5582๋ฒ - ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด (0) | 2022.03.25 |
[๋ฐฑ์ค,c++] 24498๋ฒ - blobnom (0) | 2022.03.23 |
[๋ฐฑ์ค,c++] 1120๋ฒ - ๋ฌธ์์ด (0) | 2022.03.22 |
[๋ฐฑ์ค,c++] 11000๋ฒ - ๊ฐ์์ค ๋ฐฐ์ (0) | 2022.03.18 |
๋๊ธ