본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 5073번: 삼각형과 세 변 [Java]

문제: https://www.acmicpc.net/problem/5073

 

5073번: 삼각형과 세 변

각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.

www.acmicpc.net

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를 출력합니다.