처음에 작성한 코드는 다음과 같다.
#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;
if(a==b && b==c)
cout << "Equilateral" << "\n";
else if( (a==b && b!=c) || (b==c && c!=a) || (c==a && a!=b))
cout << "Isosceles" << "\n";
else if(a!=b && b!=c && c!=a)
cout << "Scalene" << "\n";
else
cout << "Invalid" << "\n";
}
return 0;
}
먼저 모든 입력을 받고, 한꺼번에 출력을 해야하는 문제인가 생각해 그렇게 수정하려고 했으나 문제를 꼼꼼히 읽지 않은 문제였다. 문제에는 "삼각형이 되는 조건이 만족하지 않으면 역시 Invalid를 출력하라"고 되어 있었다. 이 조건도 추가해야했던 것이다.
수정한 코드는 다음과 같다.
가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못하면 Invalid를 출력하는 코드를 추가한 것이다. (+ 셋 중 가장 긴 변을 찾는 코드도 추가)
#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;
//가장 큰 변 골라내어 a에 저장
int temp;
if(b>a && b>c){
temp = b;
b = a;
a = temp;
}
else if(c>a && c>b){
temp = c;
c = a;
a = temp;
}
if(a>=b+c) //삼각형 조건도 고려하기
cout << "Invalid" << "\n";
else if(a==b && b==c)
cout << "Equilateral" << "\n";
else if( (a==b && b!=c) || (b==c && c!=a) || (c==a && a!=b))
cout << "Isosceles" << "\n";
else if(a!=b && b!=c && c!=a)
cout << "Scalene" << "\n";
else
cout << "Invalid" << "\n";
}
return 0;
}
'백준' 카테고리의 다른 글
백준 3460 이진수, c++ (0) | 2024.02.27 |
---|---|
백준 23971 ZOAC 4, c++ (1) | 2024.02.26 |
백준 2178 미로 탐색, c++ (0) | 2024.02.25 |
백준 2606 바이러스, c++ (0) | 2024.02.25 |
백준 2644 촌수계산, c++ (0) | 2024.02.23 |