백준문제풀이 10단계 기하: 직사각형과 삼각형(8) 14215번 세 막대 (C#)

2024. 7. 4. 20:00백준 문제풀이/10단계 기하: 직사각형과 삼각형

 

세 막대기를 가지고 삼각형을 만들고 그 삼각형의 둘래를 구하는 문제.

여기서 주의해야 할 점은 삼각형을 만들수 있어야한다.

 

가장긴 막대의 길이가 나머지 막대의 합보다 작아야한다는 말이다.

비교해보고 크거나 같다면 길이에맞게 잘라주어야한다.

 

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split();
        int a = int.Parse(input[0]);
        int b = int.Parse(input[1]);
        int c = int.Parse(input[2]);
        int max = Math.Max(a, Math.Max(b, c));
        int sum = a + b + c;

        if (sum - max > max)
            Console.WriteLine(a + b + c);
        else
        {
            max -= (sum - max);
            Console.WriteLine((a + b + c) - max - 1);
        }
    }
}

 

막대의 길이를 전부 받아주고 가장긴 길이를 구해주자.

또 세 막대의 합도 구해주자.

 

먼저 합에서 최댓값을 뺀 값이 최댓값보다 크다면

이건 올바른 삼각형을 만들수있다는것이니 세막대의 합을 그대로 출력해주면 된다.

 

그 다음으로 작거나 같을 경우 최댓값에서 나머지 두개의 값을 빼준다.

그다음 합에서 max(최댓값에서 나머지 두개의 값을 뺀 새로운 max)를 빼주고

추가로 1을 빼준다(같아도 안된니까)

출력하면 끝.

 

이것으로 10단계 기하: 직사각형과 삼각형가 끝났다.

생각보다 쉬운문제들로 구성되있었다.

 

내일부터는 11단계 시간 복잡도로 넘어가보자.

이름만 들어도 머리가 아파온다...