ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 10539번: 수빈이와 수열
    구현(Implementation) 2018. 6. 13. 18:23
    반응형

    https://www.acmicpc.net/problem/10539


    1. 문제 요약

    정수 수열 A를 쓴다. 그리고 그 아래에 정수 수열 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다. 

    예를 들어, 수열 A가 1, 3, 2, 6, 8이라면, 수열 B는 1/1, (1+3)/2, (1+3+2)/3, (1+3+2+6)/4, (1+3+2+6+8)/5, 즉, 1, 2, 2, 3, 4가 된다. 

    수열 B가 주어질 때, 수빈이의 규칙에 따른 수열 A는 뭘까?


    수열 B를 보고 수열 A 를 유추 하는 문제 


    2. 알고리즘

    수열 B 가 3, 2, 3, 5 순으로 주어 진다면


    수열의 첫번 째는 3 이다.

    수열의 두번 째는 2 = (3 + x) / 2 로 정리 할수 있다.

    4 = 3 + x

    x + 3 = 4

    x = 4 - 3 

    x = 1 로 계산 할 수 있다.

    두번 째 수열은 1이 된다.


    세번째 수열은

    3 = (3 + 1 + x) /3 

    9 = 3 + 1 + x

    3 + 1 + x = 9

    x = 9 - 3 - 1

    x = 5 가 된다.


    마지막 수열 까지 반복 한다.


    3. 코드 

    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
    36
    37
    38
    39
    40
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    #include <functional>         // greater 사용 위해 필요  
    #include <string>
    #include <map>
    #include <math.h>
    using namespace std;
     
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0);
     
        int n; cin >> n;
        vector<int> arr(n);
     
        for(int i=0; i<n; i++) {
            cin >> arr[i];
        }
     
        vector<int> brr(n);
        brr[0= arr[0];
     
        for(int i=1; i<n; i++) {
            int cand = arr[i];
     
            int data = 0;
            for(int j=0; j<i; j++) {
                data += brr[j];
            }
     
            int sol = cand *(i+1- data;
            brr[i] = sol;
        }
     
        for(int i =0; i<n; i++) {
            cout << brr[i] << " ";
        }
        return 0;
    }
    cs

    반응형

    댓글

Designed by Tistory.