반응형
3개의 수를 입력받아서 만들 수 있는 가장 큰 삼각형의 둘레를 구하는 문제. 다만 막대는 줄이기만 가능하다.
먼저 삼각형을 만들 수 없는 조건을 알아보자.
두 변 길이의 합 < 나머지 한 변의 길이
인 경우는 삼각형을 만들 수 없다. (같은 경우는 직선이 된다.)
2 1 1 / 2 3 5 / 3 5 10 등과 같은 경우이다.
때문에 삼각형을 만들기 위해서는 가장 긴 변의 길이를 줄여나가야 한다.
2 1 1 / 2 3 5 / 3 5 10 의 경우
1 1 1 / 2 3 4 / 3 5 7 로 바꾼다면 삼각형을 만들 수 있다.
먼저 입력받은 세 수중 가장 큰 값을 a로 지정한다.
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int tmp = 0;
if (a < b) {
tmp = a;
a = b;
b = tmp;
}
if (a < c) {
tmp = a;
a = c;
c = tmp;
}
이후 반복문을 통해 나머지 두 변 (b, c)의 합이 a보다 커질 때, 삼각형의 합을 출력하고 반복문을 종료하면 된다.
아닌 경우라면 최댓값인 a를 1씩 줄여나간다.
while (true) {
int sum = a + b + c;
if (b + c > a) {
System.out.println(sum);
break;
} else {
a--;
}
}
전체 코드는 다음과 같다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int tmp = 0;
if (a < b) {
tmp = a;
a = b;
b = tmp;
}
if (a < c) {
tmp = a;
a = c;
c = tmp;
}
while (true) {
int sum = a + b + c;
if (b + c > a) {
System.out.println(sum);
break;
} else {
a--;
}
}
sc.close();
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #2587 대표값2 (0) | 2023.10.06 |
---|---|
[Java] 백준알고리즘 #19532 수학은 비대면강의입니다 (1) | 2023.10.06 |
[Java] 백준알고리즘 #5073 삼각형과 세 변 (0) | 2023.10.06 |
[Java] 백준알고리즘 #9506 약수들의 합 (0) | 2023.10.05 |
[Java] 백준알고리즘 #2501 약수 구하기 (1) | 2023.10.05 |