1. 문제 상세
https://www.acmicpc.net/problem/5073
2. 문제 접근
무한 루프로 계속 반복하여 세 변의 길이 a, b, c 를 입력받자.
값을 입력받고 값이 0 0 0 이면 빠져나온다.
아닌 경우 a, b, c 가 모두 같은지 확인, 맞다면 Equilateral 을 출력.
아닌 경우 가장 큰 변이 두 변을 더한 값보다 큰지 확인, 맞다면 Invalid 를 출력.
아니라면 같은 변이 있는지 확인하여 맞다면 Isosceles 를, 없다면 Scalene 을 출력하자.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int a, b, c;
while (true) {
cin >> a >> b >> c;
if (a == 0 && b == 0 && c == 0) break;
else if (a == b && b == c && a == c) cout << "Equilateral" << endl;
else {
if ((a >= b && a >= c && a >= b + c) || (b >= a && b >= c && b >= a + c) || (c >= a && c >= b) && c >= a + b)
cout << "Invalid" << endl;
else {
if (a == b || b == c || a == c) cout << "Isosceles" << endl;
else cout << "Scalene" << endl;
}
}
}
}
정수형 변수 a, b, c 를 선언한다.
while문에 조건을 true 로 주어 무한반복하도록 한다.
cin 으로 세 정수(세 변)를 입력받아 각각 a, b, c 에 저장한다.
if문으로 a, b, c 가 모두 0이면 break 로 반복을 빠져나간다.
else if문으로 a, b, c 가 모두 같다면 cout 으로 Equilateral 을 출력한다.
else 로 그 외의 경우,
다시 if문으로 가장 큰 변을 찾아 그 값이 작은 두 변의 길이의 합보다 크다면 cout 으로 Invalid 를 출력한다.
아닌 경우 if문으로 a 와 b, 또는 b 와 c, 또는 a 와 c 가 같은지 확인, 맞다면 cout 으로 Isosceles 를 출력한다.
아닌 경우 cout 으로 Scalene 을 출력한다.
4. 성능 확인
5. 마무리
.
'백준 - 단계별로 풀어보기 > 기하: 직사각형과 삼각형' 카테고리의 다른 글
[백준] 14215번 : 세 막대 | C++ (0) | 2023.10.26 |
---|---|
[백준] 10101번 : 삼각형 외우기 | C++ (0) | 2023.10.20 |
[백준] 9063번 : 대지 | C++ (0) | 2023.10.20 |
[백준] 15894번 : 수학은 체육과목 입니다 | C++ (0) | 2023.10.20 |
[백준] 3009번 : 네 번째 점 | C++ (0) | 2023.10.20 |