본문 바로가기
알고리즘/알고리즘 오답노트

1292 쉽게 푸는 문제

by shinyou1024 2019. 3. 4.

스터디 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

댓글