문제 : Mini-Max Sum
사용언어 : C++
문제 내용
Given five positive integers, find the minimum and maximum values that can be calculated by summing exactly four of the five integers. Then print the respective minimum and maximum values as a single line of two space-separated long integers.
Example
arr = [1,3,5,7,9]
The minimum sum is 1 + 3 + 5 + 7 = 16 and the maximum sum is 3 + 5 + 7 + 9 = 24. The function prints
16 24
Function Description
Complete the miniMaxSum function in the editor below.
miniMaxSum has the following parameter(s):
- arr: an array of 5 integers
Print two space-separated integers on one line: the minimum sum and the maximum sum of 4 of 5 elements.
Input Format
A single line of five space-separated integers.
Constraints
1 <= arr[i] <= 10^9
Output Format
Print two space-separated long integers denoting the respective minimum and maximum values that can be calculated by summing exactly four of the five integers. (The output can be greater than a 32 bit integer.)
Sample Input
1 2 3 4 5
Sample Output
10 14
Explanation
The numbers are 1, 2, 3, 4, and 5. Calculate the following sums using four of the five integers:
- Sum everything except 1, the sum is 2 + 3 + 4 + 5 = 14.
- Sum everything except 2, the sum is 1 + 3 + 4 + 5 = 13.
- Sum everything except 3, the sum is 1 + 2 + 4 + 5 = 12.
- Sum everything except 4, the sum is 1 + 2 + 3 + 5 = 11.
- Sum everything except 5, the sum is 1 + 2 + 3 + 4 = 10.
Hints: Beware of integer overflow! Use 64-bit Integer.
내 풀이
해커랭크 1주 준비키트 1일차 문제
어려운 문제는 아니어서 따로 번역기가 필요한 정도는 아니었다.
Hints: Beware of integer overflow! Use 64-bit Integer.
힌트가 있었다
처음에는 min, max변수를 int 자료형으로 선언하고 풀었었는데
테스트케이스오류가 많았다
int -> long long으로 변경 해서 풀이 성공!
참고로
HackerRank에서는 자료형의 크기가
int -> 4byte
long -> 8byte
long long -> 8byte
void miniMaxSum(vector<int> arr)
{
long long min = 0, max = 0;
// sort the numbers
sort(arr.begin(), arr.end());
// min
for(int i = 0; i < arr.size()-1; ++i)
{
min += arr[i];
}
for(int i = 1; i < arr.size(); ++i)
{
max += arr[i];
}
cout << min << " " << max;
}
자료형의 크기
32비트 OS기준
구분 | 자료형 | 크기 | 범위 |
정수형 | (signed) int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
(signed) long (int) | 4byte | -2,147,483,648~ 2,147,483,647 | |
(signed) long long (int) | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
64비트 OS기준
구분 | 자료형 | 크기 | 범위 |
정수형 | (signed) int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
(signed) long (int) | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
(signed) long long (int) | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |