코딩 테스트/백준

백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 5073 삼각형과 세 변

devrabbit22 2026. 3. 31. 23:21

이번 문제는 삼각형의 세 변의 길이를 입력받아 조건에 따라 삼각형의 종류를 판별하는 문제이다.
이전 문제인 백준 10101 삼각형 외우기와 유사하지만, 각이 아닌 변의 길이를 비교해야 하며 삼각형이 성립하는지 확인하기 위한 간단한 연산이 필요하다.

 

단, 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid"를 출력해야 한다.
예를 들어 6, 3, 2와 같은 경우가 이에 해당한다. 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 크거나 같다면 삼각형을 만들 수 없기 때문이다. 여기서 알 수 있는 점은 max >= mid + min인 경우에는 삼각형이 성립하지 않는다.

 

이 조건을 확인하기 위해 간단한 연산이 필요하다. 먼저 세 변 중 최대값과 최소값을 구한 뒤, 전체 길이의 합에서 최대값과 최소값을 빼면 중간값을 구할 수 있다. 이렇게 구한 세 변의 길이를 비교하여 삼각형의 조건을 판단하면 문제를 쉽게 해결할 수 있다.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class geometry1
    {
        static void Main(string[] args)
        {
            //백준 5073 삼각형과 세 변
            while (true)
            {
                string[] input = Console.ReadLine().Split();

                int lengthA = int.Parse(input[0]);
                int lengthB = int.Parse(input[1]);
                int lengthC = int.Parse(input[2]);

                if (lengthA == 0 && lengthB == 0 && lengthC == 0)
                    break;

                int max = Math.Max(lengthA, Math.Max(lengthB, lengthC));
                int min = Math.Min(lengthA, Math.Min(lengthB, lengthC));
                //전체 합에서 최대, 최소 빼면 중간값
                int mid = lengthA + lengthB + lengthC - max - min;

                if(max >= min +  mid)
                {
                    Console.WriteLine("Invalid");
                }
                else if (lengthA == lengthB && lengthA == lengthC && lengthB == lengthC)
                {
                    Console.WriteLine("Equilateral");
                }
                else if ((lengthA == lengthB) || (lengthA == lengthC) || (lengthB == lengthC))
                {
                    Console.WriteLine("Isosceles");
                }
                else
                {
                    Console.WriteLine("Scalene");
                }
            }
        }
    }
}

출력 결과