스터디 8주차
1292 쉽게 푸는 문제
n이 n번 나열되는 수열
cnt를 활용해서 n번만큼 나열하게 함
idx는 숫자 하나를 나열할 때마다 증가
부분합이용
수열의 a번째부터 b번째까지의 합=arr[b] - arr[a-1]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | /* 1292 쉽게 푸는 문제 분류 : 부분합 이용 */ #include <iostream> using namespace std; int arr[1111]; int main() { int start, end; cin >> start >> end; arr[0] = 0; int idx = 1; // 수열의 인덱스 int num=1; // 수열에 등장하는 숫자 // 인덱스가 end일 때까지 cnt에 숫자를 넣고 그 숫자만큼 처리를 해줌(인덱스도 같이 올려줌) while (idx<=end) { int cnt = num; while (cnt > 0) { // idx-1의 값과 idx의 숫자가 될 num을 이용해 부분합을 구해줌 arr[idx] = arr[idx - 1] + num; idx++; cnt--; } num++; } if (start == end) cout << arr[end]-arr[end-1]; else cout << arr[end] - arr[start-1] << endl; } | cs |
'알고리즘 > 알고리즘 오답노트' 카테고리의 다른 글
[BFS+브루트포스] 16988 : Baaaaaaaaaduk2 (Easy) (0) | 2019.03.11 |
---|---|
1535 안녕 (0) | 2019.03.05 |
2644 촌수계산 (0) | 2019.03.04 |
1233 주사위 (0) | 2019.03.04 |
11057 오르막수 (0) | 2019.03.04 |
댓글