프로그래머스/Lv. 0(코딩테스트 입문)
[프로그래머스 코딩테스트] 삼각형의 완성조건 (2)(Java)
Sigfriede
2023. 5. 24. 01:10
문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 2입니다.
- 1 <= sides의 원소 <= 1,000
입출력 예
sides | result |
[1, 2] | 1 |
[3, 6] | 5 |
[11, 7] | 13 |
class Solution {
public int solution(int[] sides) {
int answer = 0;
int max = Math.max(sides[0], sides[1]);
int min = Math.min(sides[0], sides[1]);
for (int i = max - min; i < max; i++) {
answer++;
}
for (int i = max + min - 1; i > max; i--) {
answer++;
}
return answer;
}
}
max와 min 변수를 생성합니다. 각각 Math 클래스의 max와 min 메소드를 이용하여 주어진 두 변의 길이 중에서 긴 쪽과 짧은 쪽을 구분합니다. 이 문제에서 집중해야 할 점은 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작다는 부분입니다.
for문이 두 번 순회합니다. 가장 긴 변이 배열의 원소로 주어질 때와, 나머지 한 변이 가장 긴 변일 때를 구분하여 풀이했습니다.
첫 번째 for문에서는 가장 긴 변이 배열의 원소로 주어질 때, 즉 max가 가장 긴 변일 때에 해당합니다. i가 max에서 min을 뺀 값에서부터 시작하여 max값까지 순회합니다. 조건에 해당할 때 answer가 1씩 증가합니다.
두 번째 for문에서는 나머지 한 변이 가장 긴 변일 때 해당합니다. i가 max와 min을 더하고 1을 뺀 값에서부터 시작하여 i가 max보다 큰 동안 i가 1씩 감소합니다. 조건에 해당할 때 answer가 1씩 증가합니다.