문제
문제 링크
개념정리, 알고리즘 풀이 팁 링크
내가 푼 풀이
개념 정리
- 어떤 2변이 주어졌을 때 삼각형이 될 수 있는 경우는 항상 "큰 변에서 작은 변을 뺀 값에서 1을 더한 값부터", "큰 변과 작은 변을 더한 값에서 1을 뺀 값까지"이다.
- 삼각형은 각도가 필요하기 때문에 가장 큰 변과 나머지 변의 합은 같을 수 없기 때문이다.
✓ 경우 1: b가 가장 긴 변일때,
b < a + c
c를 기준으로 이항하면
b - a < c
✓ 경우 2: c가 가장 긴 변일때,
c < a + b
따라서 c의 값은 b - a < c < b + a인데
우측항에서 좌측항 - 1이 c의 개수이므로
c의 개수는 (a + b) - (b - a) => 2a - 1이다.
function solution(sides) {
return Math.min(...sides)*2 -1;
}
알고리즘 풀이 팁
- 주어진 예제를 통해 반복되는 규칙들을 찾는다. 잘 보이지 않는다면 쉬운 방법은 예제를 가지고 직접 손으로 하나씩 값을 구해가며 풀어본다.
- 내가 찾은 규칙이 맞는지 테스트 해본다.
- 어떻게 작성할지(for, while문을 쓸지.. 등등) 생각 후에 효율성은 생각하지 않고 코드로 구현해본다.
- 작성된 코드를 효율적인 코드로 리팩토링해본다.