반응형

● 문제 접근 과정

1. a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오. 

2. 삼각형의 조건 : 두 변의 길이의 합이 나머지 한 변의 길이보다 커야 한다.

3. 조건에 성립하면 그대로 출력하면 되지 만, 아니라면 가장 긴변의 길이를 a[0] + a[1] -1 만큼만 조정해 주면 된다.

4. 그러므로 a[0] + a[1] + a[0] + a[1] - 1이라는 식이 나오는데 정리하면 (a[0] + a[1]) * 2 - 1이 되는 것이다.

● 구현

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int a[3];
  cin >> a[0] >> a[1] >> a[2];
  sort(a, a + 3);
  if (a[0] + a[1] > a[2])
    cout << a[0] + a[1] + a[2];
  else
    cout << (a[0] + a[1]) * 2 - 1;

}

 

https://www.acmicpc.net/problem/14215

 

14215번: 세 막대

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

www.acmicpc.net

 

반응형

+ Recent posts