PS/백준

[백준/Baekjoon]<4153번> 직각삼각형 [C/C++/Python][Class 2]

DigIT_JHB 2022. 9. 20. 17:36

백준 4153번 직각삼각형
백준 4153번 직각삼각형

 

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.


입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.


출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.


예제 입력 1

6 8 10
25 52 60
5 12 13
0 0 0

예제 출력 1

right
wrong
right

#문제 풀이 방법

1. 세 변의 길이가 계속 입력되고, 직각삼각형의 여부를 파악하여 출력한다.

2. 일단 0 0 0이 입력되면 종료되는 반복문을 사용한다.

3. 길이가 가장 긴 빗변의 길이를 찾자

4. 직각삼각형의 조건!:(피타고라스의 정리)   
 
반응형
 
#C/C++
#include <stdio.h>
int main()
{
    int a,b,c;
    while(1)
    {
        scanf("%d %d %d",&a,&b,&c);
        if(a==0&&b==0&&c==0)
        {
            break;
        }
        else
        {
            if(c>a&&c>b)
            {
                if(c*c==a*a+b*b)
                {
                    printf("right\n");
                }
                else
                {
                    printf("wrong\n");
                }
            }
            else if(b>a&&b>c)
            {
                if(b*b==a*a+c*c)
                {
                    printf("right\n");
                }
                else
                {
                    printf("wrong\n");
                }
            }
            else 
            {
                if(a*a==c*c+b*b)
                {
                    printf("right\n");
                }
                else
                {
                    printf("wrong\n");
                }
            }
        }
    }
    return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
    while(1)
    {
        int a,b,c;
        vector<int> v;
        cin>>a>>b>>c;
        v.push_back(a);
        v.push_back(b);
        v.push_back(c);
        if(a==0&&b==0&&c==0)
        {
            break;
        }
        else
        {
            int max=*max_element(v.begin(),v.end());//빗변의 길이 구하기
            v.erase(find(v.begin(),v.end(),max));//벡터에서 최대값 지우기
            if(pow(max,2)==pow(v[0],2)+pow(v[1],2))//피타고라스 정리
                cout<<"right"<<"\n";
            else
                cout<<"wrong"<<"\n";
        }
    }
    return 0;
}

#Python

while True:
    ls=list(map(int,input().split()))
    if ls==[0,0,0]:
        break
    maxidx=ls.index(max(ls))
    Max=max(ls)
    del ls[maxidx]
    if Max**2==ls[0]**2+ls[1]**2:
        print("right")
    else:
        print("wrong")

 

반응형