코딩테스트 스터디

코딩테스트 연습 - 삼각형의 완성조건 (1) (JAVA)

개발짱 지망생 2023. 2. 1. 17:26

프로그래머스 코딩테스트 입문 0단계 문제입니다

https://school.programmers.co.kr/learn/courses/30/lessons/120889

📢 문제 설명

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.


 

⭕ 정답 코드

1. 정렬 사용하기

import java.util.Arrays;
class Solution {
    public int solution(int[] sides) {
        Arrays.sort(sides); //배열 원소들 오름차순 정렬
        return sides[0]+sides[1]>sides[2] ? 1 : 2; 
    }
}
  • 배열을 정렬해준다
  • 첫번째와 두번째 원소의 합이 세번째 원소(제일 큼)보다 클때만 1, 아니면 2 반환

2. IntStream의 max()와 sum()

import java.util.stream.IntStream;
class Solution {
    public int solution(int[] sides) {
        int max = IntStream.of(sides) //sides로 IntStream 생성
                .max() //최댓값 구하기
                .getAsInt(); //optionalInt를 int형으로 반환
        int sum = IntStream.of(sides) //sides로 IntStream 생성
                .sum() //배열 원소들의 총합 구하기
                -max; //max 빼주기
        
        return (max<sum) ? 1 : 2; //sum이 max보다 클때만 1, 아니면 2반환
    }
}
  • 자세한 설명은 주석 참고
  • 직접 풀어본 풀이입니다

 

✅ 회고

최솟값, 최댓값 관련 문제가 나오면 정렬을 떠올리자