승코딩당당당

[C++] 백준 5073: 삼각형과 세 변 본문

PS/BOJ

[C++] 백준 5073: 삼각형과 세 변

승코딩당당당 2025. 12. 28. 17:25

문제

[C++] 백준 5073: 삼각형과 세 변 BRONZE 3
https://www.acmicpc.net/problem/5073

 


 

접근 방법

이 문제는 세 변의 길이가 주어졌을 때 해당 삼각형이 유효한지, 그리고 어떤 삼각형 종류인지 판별하는 문제이다.

 

먼저 세 변을 배열에 저장한 뒤 오름차순으로 정렬한다.
정렬을 하면 가장 긴 변이 항상 마지막에 위치하므로, 삼각형의 성립 조건을 간단하게 확인할 수 있다.

 

정렬 후,

  • 가장 긴 변 ≥ 나머지 두 변의 합 → Invalid
  • 세 변이 모두 같으면 → Equilateral
  • 세 변이 모두 다르면 → Scalene
  • 위 두 경우가 아니면 → Isosceles

와 같은 순서로 판별한다.

 

구현 시 주의할 점

sort 함수를 배열에 사용할 때는

sort(배열, 배열 + 원소 개수) 형태로 끝 주소를 원소 개수만큼 더해줘야 한다.

 


 

코드

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int sides[3] = { 0, };
	while (1)
	{
		cin >> sides[0] >> sides[1] >> sides[2];

		if (sides[0] == 0 && sides[1] == 0 && sides[2] == 0)
			break;

		sort(sides, sides + 3);

		if (sides[2] >= sides[0] + sides[1])
			cout << "Invalid" << '\n';
		else if (sides[0] == sides[1] && sides[1] == sides[2])
			cout << "Equilateral" << '\n';
		else if (sides[0] != sides[1] && sides[1] != sides[2])
			cout << "Scalene" << '\n';
		else
			cout << "Isosceles" << '\n';
	}
	return 0;
}

'PS > BOJ' 카테고리의 다른 글

[C++] 백준 1927: 최소 힙  (0) 2025.12.29
[C++] 백준 2292: 벌집  (2) 2025.12.29
[C++] 백준 23971: ZOAC 4  (2) 2025.12.28
[C++] 백준 1253: 좋다  (1) 2025.12.26
[C++] 백준 1260: DFS와 BFS  (0) 2025.12.26