컴퓨터/백준 알고리즘
백준 알고리즘 - 5073번: 삼각형과 세 변 [Java]
이상한 나그네
2023. 9. 11. 00:02
문제: https://www.acmicpc.net/problem/5073
1. 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[3];
while(true) {
String answer = "Scalene";
int maxValue = 0;
int index = 0;
for(int i = 0; i < 3; i++) {
arr[i] = sc.nextInt();
if(maxValue < arr[i]) {
index = i;
maxValue = arr[i];
}
int cnt = 0;
for(int j = 0; j < i; j++) {
if(arr[i] == arr[j])
cnt++;
}
if(cnt == 1)
answer = "Isosceles";
if(cnt == 2)
answer = "Equilateral";
}
if(arr[0] == 0 && arr[1] == 0 && arr[2] == 0) break;
int sum = 0;
for(int i = 0; i < 3; i++) {
if(index != i)
sum += arr[i];
}
if(sum > maxValue)
System.out.println(answer);
else
System.out.println("Invalid");
}
}
}
2. 설명
String answer = "Scalene";
int maxValue = 0;
int index = 0;
for(int i = 0; i < 3; i++) {
arr[i] = sc.nextInt();
if(maxValue < arr[i]) {
index = i;
maxValue = arr[i];
}
int cnt = 0;
for(int j = 0; j < i; j++) {
if(arr[i] == arr[j])
cnt++;
}
if(cnt == 1)
answer = "Isosceles";
if(cnt == 2)
answer = "Equilateral";
}
for문을 통해서 삼각형의 변에 대한 입력과 비교, 그리고 가장 큰 값과 가장 큰 값이 저장되는 인덱스 값을 추출합니다.
if(arr[0] == 0 && arr[1] == 0 && arr[2] == 0) break;
삼각형의 변이 전부 0이라면 중단합니다.
int sum = 0;
for(int i = 0; i < 3; i++) {
if(index != i)
sum += arr[i];
}
가장 큰 값을 제외한 나머지 값들의 합을 구합니다.
if(sum > maxValue)
System.out.println(answer);
else
System.out.println("Invalid");
나머지 변들의 합이 가장 큰 값보다 크다면 answer를 출력하고 아니라면 Invalid를 출력합니다.