https://www.acmicpc.net/problem/14215
영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.
영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.
각 막대의 길이는 양의 정수이다
세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
삼각형의 둘레를 최대로 해야 한다.
a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.
첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.
첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Num14215 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int A = Integer.parseInt(input[0]);
int B = Integer.parseInt(input[1]);
int C = Integer.parseInt(input[2]);
int[] s = {A,B,C};
Arrays.sort(s);
if(s[0] + s[1] > s[2]){
System.out.println(A+B+C);
}else {
System.out.println((s[0]+s[1]) * 2 - 1);
}
}
}
가장 먼저 삼각형의 변의 길이 조건을 알고 있어야한다.
삼각형 변의 길이 조건을 설명하자면,
삼각형이 되기 위해서는 가장 긴 변이 나머지 두 변의 길이의 합보다 작아야한다.
즉, A , B , C 변 중에서 A 가 가장 긴 변이라면?
A < B + C 의 조건이 성립해야한다.
해당 문제에서 세개의 변을 배열에 담아서 sort를 사용해서 정렬한다.
또한 C의 길이가 A와 B의 길이보다 1 작아야 삼각형 길이가 최대가 될 수 있다.