백준

백준 5073 삼각형과 세 변, c++

2024. 2. 26. 23:03

 

 

처음에 작성한 코드는 다음과 같다.

#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