[백준] 14215

당당·2023년 4월 23일
0

백준

목록 보기
46/179

https://www.acmicpc.net/problem/14215

📔문제

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

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

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

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


📝입력

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


📺출력

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


📝예제 입력 1

1 2 3

📺예제 출력 1

5

📝예제 입력 2

2 2 2

📺예제 출력 2

6

📝예제 입력 3

1 100 1

📺예제 출력 3

3

📝예제 입력 4

41 64 16

📺예제 출력 4

113

🔍출처

-문제를 번역한 사람: baekjoon


🧮알고리즘 분류

  • 수학
  • 구현
  • 기하학

📃소스 코드

import java.util.Scanner;

public class Code14215 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		
		int[] cm=new int[3];
		int max=0;
		int index=0;
		int answer=0;
		int other=0;
		
		for(int i=0;i<3;i++) {
			cm[i]=scanner.nextInt();
			if(max<cm[i]) {
				max=cm[i];
				index=i;
			}
		}
		
		if(index==0) {
			other=cm[1]+cm[2];
			answer=getTotal(max, other);
		}
		else if(index==1) {
			other=cm[0]+cm[2];
			answer=getTotal(max, other);
		}
		else{
			other=cm[0]+cm[1];
			answer=getTotal(max, other);
		}
		
		System.out.println(answer);
	}

	public static int getTotal(int max, int other) {
		int answer;
		if(max<other) {
			answer=max+other;
		}
		else {
			answer=other*2-1;
		}
		
		return answer;
	}

}

📰출력 결과


📂고찰

getTotal()이라는 메소드를 만들었다.

삼각형의 조건을 위해서 만약 가장 긴 변의 길이가 다른 두변의 길이 합보다 작다면,
max랑 다른 두 변의 길이를 더한 것이 가장 최대인 둘레가 된다.

그렇지 않고, 다른 두변의 길이 합보다 가장 긴 변이 길다면 가장 긴변을 줄인다고 생각하고
그 길이는 다른 두 변의 길이 합보다 1 작으면 된다.


뿌듯하다!
사실 일반 수학 1이 제일 어려웠던것같다..

profile
MySQL DBA 신입 지원

0개의 댓글