Algorithm

[BOJ] 귀찮아 (SIB) 14929번 C++

따봉치치 2024. 3. 25. 15:56

 

 

문제

입력

n과 xi가 주어짇나. n은 10만 이하ㅇ고, xi는 젗ㄹ댓값이 100이하인 정수디이다.

출력

위에서 구하란 걸 구하면 된ㄷ.

 

접근 방식

 

3
1 -2 3

 

입력이 다음과 같을 때

 

1x-2 + 1x3 + -2x3 을 구하면된다

 

근데 최대 입력이 10만이기 때문에 이중 반복문을 사용하면 시간초과가 발생한다!!

 

그래서

x1x2 + x1x3 + x1x4 + x1x5 + ..... 는 x1(x2 + x3 + x4 + x5 ....) 임을 활용해서 문제를 풀면 된다..!

 

코드

 

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n; cin>>n;
    vector<int> x(n+1), pSum(n+1);
    for(int i=1; i<=n; i++) {
        cin>>x[i];
        pSum[i] = x[i] + pSum[i-1];
    }

    long long sum = 0;

    for(int i=2; i<=n; i++) {
        sum += x[i] * pSum[i-1];
    }

    cout<<sum;
}

 

 

수학은 어려워..!