프로그래밍_백준/C++

(C++) 백준 4153번 직각삼각형

공부하려구요 2023. 2. 26. 13:48
728x90
반응형

 

백준 4153번 문제는 직각삼각형 판단하기입니다!

여기서 주의할 점은 "0 0 0" 값이 입력되기 전까지 코드는 반복합니다!

또한, 값이 무작위로 써져 있으면 값을 정렬해야 합니다.

 

반복문은 while(true)로 설정하여 따로 반복문을 탈출하라는 명령어가 없으면 반복하게 합니다.

만약 "0 0 0"이 입력되면 break로 탈출합니다!

정렬되어 있지 않은 값을 정렬하고 이 값으로 직각삼각형인지 판단합니다!

 

#include<iostream>
#include<cmath>
#include<string>
#include<sstream>
using namespace std;

int main()
{
    string str;
    int a, tmp, i=0, b[3] = {0,};
    stringstream stream;
    
    while (true) {//반복문을 break를 만나기 전까지 반복합니다.
        getline(cin, str);//공백을 포함하여 값을 받습니다.
        
        if (str == "0 0 0") {
            break;
        }//만약 str에 "0 0 0"이 입력되면 반복문을 탈출합니다.
        
        stream.str(str);//공백으로 값을 구분
        
        while (stream >> a) {
            b[i] = a;
            i++;
        }//구분한 값을 배열에 넣습니다.
        
        i = 0;//i를 초기화합니다.
        stream.clear();//stream에 있는 값을 초기화합니다.
        
        for (int j=1; j < 3; j++) {
            if (b[j - 1] > b[j]) {
                tmp=b[j];
                b[j] = b[j - 1];
                b[j - 1] = tmp;
            }
        }//입력된 값을 정렬합니다.
        
        if (pow(b[2], 2) == pow(b[1], 2) + pow(b[0], 2))
            cout << "right" << endl;
        else
            cout << "wrong" << endl;
    }//직각삼각형인지 확인합니다.
    
    return 0;
}
728x90
반응형