[백준] 4153번 직각삼각형 C++ 문제 풀이 수학 2
2020. 2. 28. 12:07ㆍ알고리즘/백준
728x90
반응형
문제
과거 이집트인들은 각 변들의 길이가 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
문제 풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
while(1){
vector<int> vec;
int i=0,t;
for(;i++<3;){
cin>>t;
vec.push_back(t);
}
if(!(vec[0]+vec[1]+vec[2]))break;
sort(vec.begin(), vec.end());
cout<<(vec[0] * vec[0] + vec[1] * vec[1] == vec[2] * vec[2]?"right\n":"wrong\n");
}
}
모두 0이면 입력을 종료합니다.
양의 정수만 입력되므로 세 수의 합이 0이면 모두 0이기 때문에 다음과 같이 구현하였습니다.
if(!(vec[0]+vec[1]+vec[2]))break;
입력받은 vector를 정렬하면 맨 끝에 가장 큰 수가 위치하게 되므로
vec[0]² + vec[1]² = vec[2]² 이 성립해야 직각삼각형이게 됩니다.
참일 경우 right을 출력하고 거짓일 경우 wrong을 출력하면 됩니다.
출처 : https://www.acmicpc.net/problem/4153
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 14681번 사분면 고르기 C++ 문제 풀이 if문 (0) | 2020.05.06 |
---|---|
[백준] 3053번 택시 기하학 C++ 문제 풀이 수학 2 (0) | 2020.03.02 |
[백준] 3009번 네 번째 점 C++ 문제 풀이 수학 2 (0) | 2020.02.26 |
[백준] 1085번 직사각형에서 탈출 C++ 문제 풀이 수학 2 (0) | 2020.02.25 |
[백준] 9020번 골드바흐의 추측 C++ 문제 풀이 수학 2 (0) | 2020.02.24 |