반응형
문제 바로 가기
풀이
- 사용 언어 : C++
- 풀이한 날짜 : 2021-09-18
#include <iostream>
#include <cstdio>
using namespace std;
// 선택정렬 알고리즘을 구현한 두 개의 함수
int getMinIndexInRange(int* data, int n, int begin, int end)
{
int minIndex = begin;
int minValue = data[begin];
for (int i = begin; i < n; i++)
{
if (minValue > data[i])
{
minValue = data[i];
minIndex = i;
}
}
return minIndex;
}
void selectionSort(int* data, int n)
{
for (int i = 0; i < n-1; i++)
{
int minIndex = getMinIndexInRange(data, n, i, n-1);
int temp = 0;
temp = data[minIndex];
data[minIndex] = data[i];
data[i] = temp;
}
}
// 메인 함수
int main()
{
int tallSum = -100;
int* tall = NULL;
int* tall2 = NULL;
tall = new int[9];
tall2 = new int[7];
// 난쟁이들 키를 입력 받을때부터 더해 합을 tallSum변수에 저장
for (int i = 0; i < 9; i++)
{
scanf("%d", &tall[i]);
tallSum += tall[i];
}
// 이중 반복문으로 두 명의 가짜 난쟁이를 탐색
for (int i = 0; i < 9; i++) {
for (int j = i+1; j < 9; j++) {
if(tall[i] + tall[j] == tallSum) {
tall[i] = 0; tall[j] = 0;
goto EXIT;
}
}
}
EXIT:
// tall2 새 배열에 진짜 7명의 난쟁이들의 키를 대입
int k = 0;
int l = 0;
while (k < 9)
{
if (tall[k] != 0)
{
tall2[l] = tall[k];
l++;
}
k++;
}
// 선탣 정렬 알고리즘으로 키를 오름차순으로 나열
selectionSort(tall2, 7);
for (int i = 0; i < 7; i++)
{
cout << tall2[i] << endl;
}
delete[] tall;
delete[] tall2;
return 0;
}
(예전에 기록해둔 풀이를 그대로 옮겨온 것이기에, 부가 설명이 없다는 점 양해 부탁드립니다.)
반응형
'◼ PS Note > 백준' 카테고리의 다른 글
[백준] 2525번 : 오븐 시계 (🥉브론즈 5) (Python) (0) | 2023.01.20 |
---|---|
[백준] 2163번 : 초콜릿 자르기 (🥉브론즈 3) (Python) (2) | 2023.01.20 |
[백준] 1010번 : 더하기 사이클 (🥉브론즈 1) (Python) (2) | 2023.01.20 |
[백준] 10699번 : 오늘 날짜 (🥉브론즈 5) (Python) (0) | 2023.01.20 |
[백준] 1010번 : 다리 놓기 (🥈실버 5) (C++) (0) | 2023.01.20 |