반응형
728x170
이것도 DP의 예로
입력이 많고 테스트 케이스도 많아서
DP 풀어야 하는 방식과 비슷할 거라고 예상하고 들어갔다.
https://www.acmicpc.net/problem/11659
#맞은 풀이
#include<iostream>
using namespace std;
int N,M;
int map[100001];
int dp[100001];
int main(){
ios :: sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for(int i = 1; i<=N; i++){
int a;
cin >> a;
map[i] = a;
dp[i] = a+dp[i-1];
}
while(M--){
int a,b;
cin >> a >> b;
cout << dp[b]-dp[a-1] << '\n';
}
}
누적 합을 dp에 저장하는 것이다.
그렇게 되면 10번째까지의 수 빼기 2번째 까지의 수가 3번째부터 10번째 까지의 수가 된다.
이런 식이다.
그리고 테스트케이스가 많을 땐 항상 아래 코드를 메인에서 실행해줘야한다. 그렇지않으면
맞게 풀어도 시간초과난다.
ios::sync_with_stdio(0);
cin.tie(0);
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 2217번 C++ [CPP] (0) | 2021.06.28 |
---|---|
백준, BOJ, 12582번 C++ [CPP] (0) | 2021.06.22 |
백준, BOJ, 15657번 C++ [CPP] (0) | 2021.06.21 |
백준, BOJ, 1654번 C++ [CPP] (0) | 2021.06.18 |
백준, BOJ, 10816번 C++ [CPP] (0) | 2021.06.18 |