https://school.programmers.co.kr/learn/courses/30/lessons/120868
이 문제는 수학공식을 이용해서 푸는게 가장 빠르다.
먼저 주어진 두 변을 a,b라 하고 나머지 한 변을 x라 하자.
1) 가장 긴 변이 a라면 a < b+x가 되고 x > a-b로 부등식 변환이 가능하다.
2) 가장 긴 변이 x라고 한다면 x < a+b 여야 한다.
3) 두 식을 모두 만족하는 부등식은 a-b < x < a+b인데 부등호가 <,> 이다. 즉 최솟값은 a-b+1, 최댓값은 a+b-1를 해줘야 구할 수 있다.
4) 위의 식을 토대로 부등식을 다시 세우면 a-b+1 <= x <= a+b-1이 되고
이를 만족하는 정수의 개수는 최댓값 - 최솟값 +1이므로 a+b-1 - (a-b+1) + 1 => 2b -1이 된다.
5) 가장 긴 변을 a라 두었기에 return 2*min(sides) -1를 해주면 된다.
'프로그래머스 > 프로그래머스 Lv0' 카테고리의 다른 글
Lv0 수열과 구간쿼리2 (0) | 2024.07.15 |
---|---|
Lv0 무작위로 K개의 수 뽑기 (0) | 2024.07.09 |
Lv0 구슬을 나누는 경우의 수 (0) | 2024.07.09 |
Lv0 문자열 여러 번 뒤집기 (0) | 2024.07.04 |
Lv0 두 수의 합 (0) | 2024.07.04 |