컴퓨터 과학/자료구조, 알고리즘

[Rust로 백준 하루 하나] 10-8. 세 막대

sans2 2024. 9. 12. 09:37

문제 (14215번)

영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.

영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.

 

  • 각 막대의 길이는 양의 정수이다
  • 세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
  • 삼각형의 둘레를 최대로 해야 한다.

 

a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

 

출력

첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.


풀이

코드

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let mut input: Vec<i32> = input
        .split_whitespace()
        .map(|i| i.trim().parse::<i32>().unwrap())
        .collect();
    input.sort();    

    let result: i32;
    if input[2] >= input[0] + input[1] {
        input.pop();
        result = input.iter().sum::<i32>() * 2 - 1;
    } else {
        result = input.iter().sum::<i32>();
    }
    println!("{}", result);
}

해설

특이사항 없음


추가 학습

  • 특이사항 없음