역시 로직 자체는 쉬운 문제다.
다만 오버플로우를 조심해야 한다.
문제를 보면 Constraints가 1 <= arr[i] <= 10^9인데
int로 표현할 수 있는 범위를 넘을 수 있으므로 (int의 최대값은 2,147,483,647 : 대충 21억, 문제는 최대 10억까지이므로 이런 수가 3번 있다 하면... 바로 오버플로우가 일어난다.) 이를 신경써주어야 하는 문제였다.
출력할때도 %d를 그냥 쓰면 오버플로우가 일어나므로, %ld를 써서 long형으로 출력해주어야 한다.
다들 싫어하겠지만 알고리즘 문제 풀면서 커다란 수가 더욱 싫어졌다.
void miniMaxSum(vector<int> arr) {
long sum = 0;
int max = INT_MIN;
int min = INT_MAX;
for(int i = 0; i < arr.size(); i++) {
sum += arr[i];
if(arr[i] > max) { max = arr[i]; }
if(arr[i] < min) { min = arr[i]; }
}
printf("%ld %ld\n", sum-max, sum-min);
}
'(구) 개발지식 (공통) > 코딩 연습 (문제풀이)' 카테고리의 다른 글
[백준/실버] 1003번 피보나치 함수 (0) | 2021.09.28 |
---|---|
[HackerRank/Easy] XOR Strings 2 (0) | 2021.09.19 |
[HackerRank/Easy] Time Convention (0) | 2021.09.13 |
[HackerRank/Easy] Plus Minus (0) | 2021.09.12 |
코딩 연습 사이트들 (0) | 2021.09.04 |