[문제]
[문제 설명]
- 입력: 5개의 띄어쓰기로 구분되는 숫자 5개를 한 줄로 입력받음
- arr: 주어진 arr에는 5개의 정수 값을 입력받을 수 있음
- 출력: 32bit 정수보다 커야함, 5개의 숫자 중 4개를 골라 가장 작은 합과 가장 큰 합을 출력
[문제 풀이]
- 입력 받은 arr를 정렬(버블 정렬 사용)하여 오름차순으로 정리
- for문을 이용하여 두개의 출력 값을 계산
> 가장 합이 작을 때는 인덱스 0~3까지의 합
> 가장 합이 클 때는 인덱스 1~4까지의 합
- 출력 값이 32bit 정수보다 커야하므로 결과 값을 나타내는 변수들을 unsigned int로 선언하여 사용
[코드]
void miniMaxSum(vector<int> arr) {
unsigned int result1=0,result2=0,temp;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int i=0;i<4;i++) result1= result1+arr[i];
for(int j=1;j<5;j++) result2= result2+arr[j];
cout<<result1<<" "<<result2<<endl;
}
[실행결과]
'CODE > HackerRank' 카테고리의 다른 글
[C++] HackerRank : Simple Array Sum (0) | 2021.09.21 |
---|---|
[C++] HackerRank : Diagonal Difference (0) | 2021.09.21 |
[C++] HackerRank : Time Conversion (0) | 2021.09.19 |
[C++] HackerRank : Left Rotation (0) | 2021.09.19 |
[C++] HackerRank : Correctness and the Loop Invariant (0) | 2021.09.12 |