문제설명
소스코드
#include <iostream>
using namespace std;
int main()
{
int arr[3]; bool flag[3] = { false };
int max = 0; int idx; int sum = 0;
for (int i = 0; i < 3; ++i)
{
cin >> arr[i];
if (arr[i] > max) { max = arr[i]; idx = i; } //가장 큰 길이와 인덱스 저장
}
flag[idx] = true; //위에서 저장한 인덱스에 해당하는 플래그를 true로 바꿈
for (int i = 0; i < 3; ++i)
{
if (flag[i] == true) continue; //가장 큰 길이 제외
else sum += arr[i]; //길이 합 저장
}
if (arr[idx] >= sum) arr[idx] = sum - 1; //삼각형 조건을 만족시키지 않는다면 강제로 만족시킴
cout << sum + arr[idx];
}
또는 아래와 같은 방법으로 풀 수 있다.
#include <iostream>
using namespace std;
int main()
{
int arr[3]; bool flag[3] = { false };
int max = 0; int idx; int sum = 0;
for (int i = 0; i < 3; ++i)
{
cin >> arr[i];
if (arr[i] > max) { max = arr[i]; idx = i; }
}
flag[idx] = true;
while (true)
{
for (int i = 0; i < 3; ++i)
{
if (flag[i] == true) continue;
else sum += arr[i];
}
if (arr[idx] < sum) break; //삼각형의 조건을 만족한다면 탈출
sum = 0; --arr[idx]; //가장 긴 변의 길이를 1씩 감소시킴
}
cout << sum + arr[idx];
}
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 10단계 - 10101번 문제 (삼각형 외우기) (0) | 2023.05.15 |
---|---|
[C++] 백준 10단계 - 1085번 문제 (직사각형에서 탈출) (0) | 2023.05.15 |
[C++] 백준 10단계 - 5073번 문제 (삼각형과 세 변) (0) | 2023.05.14 |
[C++] 백준 10단계 - 9063번 문제 (대지) (0) | 2023.05.14 |
[C++] 백준 10단계 - 15894번 문제 (수학은 체육과목 입니다) (0) | 2023.05.13 |