문제 풀이/Python

[programmers] [Python] 삼각형의 완성조건 2

일 월 2023. 2. 17. 16:59

코딩테스트 연습 - 삼각형의 완성조건 (2) | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

접근법

sides에 주어지지 않은 변의 길이를 length, sides의 원소 중 큰 값을 max, 작은 값을 min이라고 하자.

1. max가 삼각형의 가장 긴 변의 길이인 경우
1-1. max < min + length => length > max - min
1-2. length < max
=> 1-1과 1-2를 종합하면 max - min < length < max
=> 위의 식을 만족하는 length의 개수는 (max - (max - min) - 1) = min - 1

2. length가 삼각형의 가장 긴 변의 길이인 경우
2-1. length < min + max
2-2. length > max
=> 2-1과 2-2를 종합하면 max < length < min + max
=> 위의 식을 만족하는 length의 개수는 (min + max - max - 1) = min - 1

3. max와 length가 같은 경우
=> 이를 만족하는 length의 개수는 1


=> 1, 2, 3을 종합하면 모든 경우의 수는 2*min - 1

 

풀이

def solution(sides):
    answer = 2*min(sides) - 1
    return answer