알고리즘/백준[BOJ] 오답노트

c++ vector 초기 크기 인자값 문제 - 백준 알고리즘 오답노트 10819

플라즈밍 2019. 2. 2. 23:50
반응형

백준 BOJ 알고리즘 오답노트 - 10819  번



백터의 초기 크기값은 그 값을 보장하지 못한다. !!

백터를 만들때 인자값으로 5를 넘기면 크기가 5인 백터가 만들어진다고 배웠는데

막상 해보니까 크기가 더 컸다. 7인가? 


그래서 백터를 생성할때 크기를 넣지 않고 push_back을 여러번 사용하며 직접 늘리는 방법으로 했다.



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
 
//10819 
 
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
 
int cal(vector<int>& a){
    int result = 0;
    for(int i = 0; i < a.size()-1; i++){
        result+=abs(a[i]-a[i+1]);
    }
    return result;
}
 
int main(){
    int ans = 0 ;
    int n; cin>>n;
    vector<int> v; 
    
    for(int i = 0; i< n ; i++){ int tmp; cin>>tmp; v.push_back(tmp);}
    
    sort(v.begin(),v.end());
    
    do{
        int tmp = cal(v);
//        cout<<tmp<<"\n";
        if(tmp > ans) ans = tmp;
    }while(next_permutation(v.begin(),v.end()));
    
    cout<<ans<<"\n";
    return 0;    
}
 
//FB1. //실패 - 왜 무한 루프 그지같이 도는거지? 
//백터에 기본 크기값을 주니까 내가 원하는 n보다 큰 값이 들어가서 다음순열이 그냥 x되버려 
cs


반응형