목차
백준 단계별로 풀어보기
25.09.26
10단계: 기하 1: 직사각형과 삼각형
5073번: 삼각형과 세 변
문제 링크 : https://www.acmicpc.net/problem/5073
문제 풀이
>> 문제를 풀기 위해 알아야 할 개념
- 삼각형의 조건
: 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 더 길어야 한다. 즉, 두 변의 길이의 합이 긴 변의 길이보다 작거나 같으면 삼각형이 될 수 없다.
>> 풀이
- while 반복문을 통해 모든 과정을 계속 반복하고, 받은 입력값이 '0 0 0'일 때 break 하여 코드를 종료시킨다.
- 입력값을 담을 배열을 초기화하고, 가장 긴 변의 길이를 담을 변수 'largest'를 초기화하고, 모든 변의 길이의 합을 담을 변수 'sum'을 초기화한다.
- 입력값을 받아 int로 변환하여 배열에 담는다.
- for 반복문을 통해 3번 반복하여 가장 긴 변의 길이를 찾아 largest에 대입하고 sum에 각 변의 길이를 더한다.
- 아래 조건에 따라 값을 출력한다.
- '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");
}
}
}
'Development > Baekjoon' 카테고리의 다른 글
[C#] 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 (0) | 2025.09.28 |
---|---|
[C#] 14215번: 세 막대 (0) | 2025.09.27 |
[C#] 10101번: 삼각형 외우기 (0) | 2025.09.25 |
[C#] 9063번: 대지 (0) | 2025.09.24 |
[C#] 15894번: 수학은 체육과목 입니다 (0) | 2025.09.23 |