문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 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씩 증가합니다.
'프로그래머스 > Lv. 0(코딩테스트 입문)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 소인수분해(Java) (0) | 2023.05.29 |
---|---|
[프로그래머스 코딩테스트] 종이 자르기(Java) (0) | 2023.05.25 |
[프로그래머스 코딩테스트] 가까운 수(Java) (0) | 2023.05.20 |
[프로그래머스 코딩테스트] 문자열 계산하기(Java) (0) | 2023.05.20 |
[프로그래머스 코딩테스트] 한 번만 등장한 문자(Java) (1) | 2023.05.16 |