문제설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
입출력 예
my_string | result |
---|---|
[1, 2] | 1 |
[3, 6] | 5 |
[11, 7] | 13 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
입출력 예 #3
풀이
공식실명에 따라 직관적으로 풀이 했다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
위 조건에 따라 코드를 짜고 제출 했으나...
일부 케이스에서 실패가 떴다.
sides의 요소 값을 같은 값으로 넣어 보니 기대 값과 다른 결과가 나왔다.
두 변이 같은 값으로 주어질 경우에는 한 변의 경우의 수만 따져 주면 된다.
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int[] sides) {
int longer = Math.max(sides[0], sides[1]);
int shorter = Math.min(sides[0], sides[1]);
List<Integer> otherSide = new ArrayList<>();
List<Integer> longeestSide = new ArrayList<>();
for (int i = 1; i < longer; i++) {
if (shorter + i >= longer) {
otherSide.add(i);
}
}
for (int i = longer + 1; i < longer + shorter; i++) {
longeestSide.add(i);
}
return otherSide.size() + longeestSide.size();
}
}
아래 코드를 추가 해주면 된다.
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int[] sides) {
//추가된 코드
if (sides[0]==sides[1]) {
return sides[0]+sides[1]-1;
}
int longer = Math.max(sides[0], sides[1]);
int shorter = Math.min(sides[0], sides[1]);
List<Integer> otherSide = new ArrayList<>();
List<Integer> longeestSide = new ArrayList<>();
for (int i = 1; i < longer; i++) {
if (shorter + i >= longer) {
otherSide.add(i);
}
}
for (int i = longer + 1; i < longer + shorter; i++) {
longeestSide.add(i);
}
return otherSide.size() + longeestSide.size();
}
}
참고