Adorable Cake Smiley
본문 바로가기

HackerRank

[HackerRank] [C++] 1 Week Preparation Kit > Day 1 > Mini-Max Sum

 

문제 : 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

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:

  1. Sum everything except 1, the sum is 2 + 3 + 4 + 5 = 14.
  2. Sum everything except 2, the sum is 1 + 3 + 4 + 5 = 13.
  3. Sum everything except 3, the sum is 1 + 2 + 4 + 5 = 12.
  4. Sum everything except 4, the sum is 1 + 2 + 3 + 5 = 11.
  5. 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