코린이의 기록

[BOJ] 10819 - 차이를 최대로 (C++) 본문

c&c++/백준

[BOJ] 10819 - 차이를 최대로 (C++)

코린이예요 2018. 5. 8. 19:21
반응형
1. 알아두어야 할것

이 문제는 다음순열(Next permutation)을 이용하여 풀 수있는 문제이다. 

2. 전체 소스
#include <iostream> #include <algorithm> #include <vector> using namespace std; int gMax=0; int main(){ int num; int result; int sub; cin >> num; vector <int> v(num); for(int i=0; i<num; i++){ cin >> v[i]; } // 우선 오름차순으로 정렬시켜준다 (selection sort를 사용하였다.) for(int i=0; i<num; i++){ for(int j=i+1; j<num; j++){ if(v[j] < v[i]){ swap(v[j], v[i]); } } } do{ sub = 0; result = 0; for(int i=0; i<num-1; i++){ sub = v[i] - v[i+1]; if(sub < 0) // 절대 값을 구하기 sub *= -1; result += sub; } if(gMax < result) gMax = result; }while(next_permutation(v.begin(), v.end())); cout << gMax << endl; }
3. 참고사항

나는  max, sort 함수를 몰라서 위와같이 구현했는데 해당 함수를 사용하면 더 간결하게 구현할 수 있다. 
sort(v.begin(), v.end()); 
-> 입력받은 받은 값을 오름차순으로 소팅시켜준다.

gMax= max(gMax,result);
-> max 값을 정해준다.

4. 문제


반응형

'c&c++ > 백준' 카테고리의 다른 글

[BOJ] 9095 - 1,2,3 더하기 (C++)  (0) 2018.05.08
[BOJ] 11727 - 타일링2 (C++)  (0) 2018.05.08
[BOJ] 1463 - 1로 만들기 (C++)  (0) 2018.05.08
[BOJ] 1697 - 숨바꼭질 (C++)  (0) 2018.05.08
[BOJ] 10971 - 외판원 순회2 (C++)  (0) 2018.05.08
Comments