Notice
Recent Posts
Recent Comments
Link
승코딩당당당
[C++] 백준 5073: 삼각형과 세 변 본문
문제
[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 |