해커랭크(HackerRank)
Plus Minus
cepiloth
2018. 8. 19. 17:45
반응형
1. 문제
2. 알고리즘
키워드 - 구현
* 문제 풀이
입력 받은 자연수에서 음수, 양수, 0 의 숫자의 개수가 전체 입력 받은 원소의 크기를 분수로 표현하여 출력
-.- 영어 설명 그대로 풀면 됨
6
-4 3 -9 0 4 1
음수 : -4, -9 / 총 크기 : 2
양수 : 3, 4, 1 / 총 크기 : 3
0 : 0 / 총 크기 : 1
postive : 3/6 = 0.500000
negative : 2/6 = 0.33333
zero : 1/6 = 0.166667
3. 코드
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #include <bits/stdc++.h> using namespace std; vector<string> split_string(string); /* * Complete the plusMinus function below. */ void plusMinus(vector<int> arr) { /* * Write your code here. */ int size = arr.size(); int postive = 0; int negative = 0; int zero =0; for(int i=0; i<size; i++) { if(arr[i] == 0) zero++; else if(arr[i] > 0) postive++; else if(arr[i] < 0) negative++; } double p, n, z; p = (double)postive / size; n = (double)negative / size; z = (double)zero / size; cout.precision(6); cout << p << endl; cout << n << endl; cout << z << endl; } int main() { int n; cin >> n; cin.ignore(numeric_limits<streamsize>::max(), '\n'); string arr_temp_temp; getline(cin, arr_temp_temp); vector<string> arr_temp = split_string(arr_temp_temp); vector<int> arr(n); for (int arr_itr = 0; arr_itr < n; arr_itr++) { int arr_item = stoi(arr_temp[arr_itr]); arr[arr_itr] = arr_item; } plusMinus(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 |
반응형