-
Mini-Max Sum해커랭크(HackerRank) 2018. 8. 19. 17:43반응형
1. 문제
2. 알고리즘
키워드 - 구현
* 문제 풀이
입력으로 받은 정수 배열에서 하나의 원소를 제거 하여 가장 큰 원소의 합과 가장 작은 원소의 합을 출력 하는 문제
가장 큰 원소의 합
1. 내림 차순 정렬
2. index 1 부터 끝까지 합을 구함
가장 작은 원소의 합
1. 내림 차순 정렬
2. index 마지막을 제외한 합을 구함
int 형이 자료형의 표현 범위가 넘을 수 있으니 출력 값은 long long 으로 해야 한다.
3. 코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#include <bits/stdc++.h>using namespace std;vector<string> split_string(string);/** Complete the miniMaxSum function below.*/void miniMaxSum(vector<int> arr) {/** Write your code here.*/sort(arr.begin(), arr.end());int size = arr.size();long long max = 0;for(int i = 1; i<size; i++) {max += arr[i];}long long min = 0;for(int i = 0; i<size-1; i++) {min += arr[i];}cout << min << " " << max;}int main(){string arr_temp_temp;getline(cin, arr_temp_temp);vector<string> arr_temp = split_string(arr_temp_temp);vector<int> arr(5);for (int arr_itr = 0; arr_itr < 5; arr_itr++) {int arr_item = stoi(arr_temp[arr_itr]);arr[arr_itr] = arr_item;}miniMaxSum(arr);return 0;}vector<string> split_string(string input_string) {string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) {return x == y and x == ' ';});input_string.erase(new_end, input_string.end());while (input_string[input_string.length() - 1] == ' ') {input_string.pop_back();}vector<string> splits;char delimiter = ' ';size_t i = 0;size_t pos = input_string.find(delimiter);while (pos != string::npos) {splits.push_back(input_string.substr(i, pos - i));i = pos + 1;pos = input_string.find(delimiter, i);}splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1));return splits;}cs 반응형'해커랭크(HackerRank)' 카테고리의 다른 글
Plus Minus (0) 2018.08.19 Staircase (0) 2018.08.19 Birthday Cake Candles (0) 2018.08.19 Time Conversion (0) 2018.08.19 Grading Students (0) 2018.08.19