백준 4153 - 직각삼각형 [Rust]

[Bronze III] 직각삼각형 - 4153

Posted by Hebi on March 27, 2023

백준 알고리즘

[Bronze III] 직각삼각형 - 4153

문제 링크

성능 요약

메모리: 13152 KB, 시간: 4 ms

분류

기하학(geometry), 수학(math), 피타고라스 정리(pythagoras)

문제 설명

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

입력

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

출력

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

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use std::io;

fn main() {
loop {
let mut input_a = String::new();
io::stdin().read_line(&mut input_a).unwrap();
let v: Vec<i32> = input_a
.split_whitespace()
.map(|x| -> i32 { x.parse().unwrap() })
.collect();
let x = v[0];
let y = v[1];
let z = v[2];

        let mut st = 0;
        let mut nd = 0;
        let mut rd = 0;

        if x >= y {
            if y >= z {
                st = x;
                nd = y;
                rd = z;
            }
            if x >= z {
                st = x;
                nd = z;
                rd = y;
            }
            if z >= x {
                st = z;
                nd = x;
                rd = y;
            }
        }
        if y >= x {
            if x >= z {
                st = y;
                nd = x;
                rd = z;
            }
            if y >= z {
                st = y;
                nd = z;
                rd = x;
            }
            if z >= y {
                st = z;
                nd = y;
                rd = x;
            }
        }
        if st == 0 || nd == 0 || rd == 0 {
            break;
        }
        if (st * st) == (nd * nd) + (rd * rd) {
            println!("{}", "right");
        } else {
            println!("{}", "wrong");
        }
    }

}