본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 - 14215번: 세 막대 [Java]

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

 

14215번: 세 막대

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

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];
		
		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 sum = 0;
		for(int i = 0; i < 3; i++) {
			if(index != i)
				sum += arr[i];
		}
		
		while(arr[index] >= sum)
			arr[index]--;
		
		System.out.println(sum + arr[index]);
	}
}

2. 설명

for(int i = 0; i < 3; i++) {
    arr[i] = sc.nextInt();
    if(maxValue < arr[i]) {
        index = i;
        maxValue = arr[i];
    }
}

반복문을 통해서 최댓값과 최대값에 대한 인덱스 값을 추출합니다.

int sum = 0;
for(int i = 0; i < 3; i++) {
    if(index != i)
        sum += arr[i];
}

반복문을 통해서 가장 큰 변이 아닌 나머지 변들의 합을 구합니다.

while(arr[index] >= sum)
    arr[index]--;

System.out.println(sum + arr[index]);

삼각형의 조건이 성립될 때까지 가장 큰 변의 길이를 1씩 감소시킨 뒤 둘레의 길이를 출력합니다.