[BOJ] 백준_2309번_일곱 난쟁이 / C++백준 알고리즘2021. 9. 13. 23:27
목차
문제 출처
https://www.acmicpc.net/problem/2309
코드
//[BOJ] 2309번_일곱 난쟁이
#include <iostream>
using namespace std;
int main()
{
int length[10];
int tot = 0;
int index1 = 0;
int index2 = 0;
int temp = 0;
for (int i = 0; i < 9; i++)
{
cin >> length[i];
if (length[i] > 100)
{
cout << "난쟁이의 키는 100을 넘을 수 없습니다." << endl;
break;
}
}
cout << endl;
for (int i = 0; i < 9; i++) {
tot = tot + length[i];
} //tot에 난쟁이들의 키를 다 더한 값을 저장한다.
for (int a = 0; a < 9; a++)
{
for (int b = 0; b < 9; b++)
{
if (tot - (length[a] + length[b]) == 100)
{
index1 = a;
index2 = b;
break;
}
}
} //모든 경우의 수를 돌며 난쟁이들의 키 총합에서
//두 난쟁이의 키를 뺀 값이 100이 되는 시점의 인덱스를 저장한다.
for (int i = index1; i < 9; i++)
{
length[i] = length[i + 1];
} //index1번째부터 인덱스를 1 증가시켜 length[index1]을 삭제한다.
for (int i = index2; i < 8; i++)
{
length[i] = length[i + 1];
} //index2번째부터 인덱스를 1 증가시켜 length[index2]을 삭제한다.
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 6 - x; y++)
{
if (length[y] > length[y + 1]) {
temp = length[y];
length[y] = length[y + 1];
length[y + 1] = temp;
}
}
} //length배열의 값을 오름차순으로 정렬한다.
for (int i = 0; i < 7; i++)
{
cout << length[i] << endl;
}
cout << endl;
return 0;
}
매우 많은 반복문을 사용해야 하는 문제였다. 배열에 난쟁이들의 키를 저장한 후에 그 중 9명의 모든 난쟁이의 키의 총합에서 무작위 두 명의 키를 뺀 값이 100이 되는 경우 그 두 명의 난쟁이의 키가 해당되는 배열의 인덱스를 index1, index2에 저장한다. 해당 인덱스의 요소를 삭제하고 난 후 배열을 오름차순으로 정렬하여 출력한다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_1748번_수 이어 쓰기1 / C언어, C++ (0) | 2021.09.15 |
---|---|
[BOJ] 백준_1476번_날짜 계산 / C++ (0) | 2021.09.14 |
[BOJ] 백준_10872번_팩토리얼 / C++ (0) | 2021.09.12 |
[BOJ] 백준_1929번_소수 구하기 / C언어, C++ (0) | 2021.09.10 |
[BOJ] 백준_1978번_소수 찾기 / C++ (0) | 2021.09.09 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!