

이번 문제는 삼각형의 세 변의 길이를 입력받아 조건에 따라 삼각형의 종류를 판별하는 문제이다.
이전 문제인 백준 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");
}
}
}
}
}

'코딩 테스트 > 백준' 카테고리의 다른 글
| 백준 - [단계별로 풀어보기 시간 복잡도] 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 (0) | 2026.04.01 |
|---|---|
| 백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 14215 세 막대 (0) | 2026.04.01 |
| 백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 10101 삼각형 외우기 (0) | 2026.03.31 |
| 백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 9063 대지 (0) | 2026.03.31 |
| 백준 - [단계별로 풀어보기 기하 1: 직사각형과 삼각형] 15894 수학은 체육과목 입니다. (0) | 2026.03.30 |