-
A Very Big Sum해커랭크(HackerRank) 2018. 8. 19. 17:48반응형
1. 문제
2. 알고리즘
키워드 - 구현
* 문제 풀이
- 인자로 들어오는 정수 배열에 합을 구하는 문제이다. int 의 유효범위가 넘어 가기 때문에 오차가 생긴다.
- int 형 데이터의 합산의 값을 long long 으로 변경 하여 풀이 한다.
3. 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <bits/stdc++.h>using namespace std;vector<string> split_string(string);/** Complete the aVeryBigSum function below.*/long long aVeryBigSum(int n, vector<long> ar) {/** Write your code here.*/long long sum = 0 ;for(int i =0; i< n; i++)sum += ar[i];return sum;}int main(){ofstream fout(getenv("OUTPUT_PATH"));int n;cin >> n;cin.ignore(numeric_limits<streamsize>::max(), '\n');string ar_temp_temp;getline(cin, ar_temp_temp);vector<string> ar_temp = split_string(ar_temp_temp);vector<long> ar(n);for (int ar_itr = 0; ar_itr < n; ar_itr++) {long ar_item = stol(ar_temp[ar_itr]);ar[ar_itr] = ar_item;}long long result = aVeryBigSum(n, ar);fout << result << "\n";fout.close();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)' 카테고리의 다른 글
Simple Array Sum (0) 2018.08.19 Compare the Triplets (0) 2018.08.19 Diagonal Difference (0) 2018.08.19 Plus Minus (0) 2018.08.19 Staircase (0) 2018.08.19