본문 바로가기
Development/Baekjoon

[C#] 5073번: 삼각형과 세 변

by Mobics 2025. 9. 26.

목차


    백준 단계별로 풀어보기

    25.09.26

    10단계: 기하 1: 직사각형과 삼각형


    5073번: 삼각형과 세 변

    문제 링크 : https://www.acmicpc.net/problem/5073

     

    문제 풀이

    >> 문제를 풀기 위해 알아야 할 개념

    - 삼각형의 조건

    : 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 더 길어야 한다. 즉, 두 변의 길이의 합이 긴 변의 길이보다 작거나 같으면 삼각형이 될 수 없다.

     

    >> 풀이

    1. while 반복문을 통해 모든 과정을 계속 반복하고, 받은 입력값이 '0 0 0'일 때 break 하여 코드를 종료시킨다.
    2. 입력값을 담을 배열을 초기화하고, 가장 긴 변의 길이를 담을 변수 'largest'를 초기화하고, 모든 변의 길이의 합을 담을 변수 'sum'을 초기화한다.
    3. 입력값을 받아 int로 변환하여 배열에 담는다.
    4. for 반복문을 통해 3번 반복하여 가장 긴 변의 길이를 찾아 largest에 대입하고 sum에 각 변의 길이를 더한다.
    5. 아래 조건에 따라 값을 출력한다.
      •     'sum - largest' 즉, 가장 긴 변의 길이를 제외한 나머지 두 변의 길이의 합이 가장 긴 변의 길이보다 작거나 같으면 삼각형이 될 수 없기 때문에 'Invalid'를 출력한다.
      •     배열의 세 값이 모두 같으면 'Equilateral'을 출력한다.
      •     배열 중 두 값만 같으면 'Isosceles'를 출력한다.
      •     모두 아니라면 'Scalene'을 출력한다.

     

    정답 코드

    class Backjoon
    {
        static void Main(string[] args)
        {
            while (true)
            {
                int[] arr = new int[3];
                int largest = 0;
                int sum = 0;
                
                string[] input = Console.ReadLine().Split();
                arr[0] = int.Parse(input[0]);
                arr[1] = int.Parse(input[1]);
                arr[2] = int.Parse(input[2]);
    
                if (arr[0] == 0 && arr[1] == 0 && arr[2] == 0) break;
    
                for (int i = 0; i < 3; i++)
                {
                    if (arr[i] > largest)
                    {
                        largest = arr[i];
                    }
                    sum += arr[i];
                }
    
                if (sum - largest <= largest)
                    Console.WriteLine("Invalid");
                else if (arr[0] == arr[1] && arr[1] == arr[2])
                    Console.WriteLine("Equilateral");
                else if (arr[0] == arr[1] || arr[0] == arr[2] || arr[1] == arr[2])
                    Console.WriteLine("Isosceles");
                else
                    Console.WriteLine("Scalene");
            }
        }
    }