코딩테스트 연습 - 삼각형의 완성조건 (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
'문제 풀이 > Python' 카테고리의 다른 글
[Python] [BOJ] 2156 포도주 시식 (0) | 2023.05.28 |
---|---|
[Python] [BOJ] 13549 숨바꼭질 3 (0) | 2023.05.27 |
[programmers] [Python] 최대공약수와 최소공배수 (0) | 2023.01.26 |
[백준 / solved ac] [Python] 1439 뒤집기 (0) | 2023.01.22 |
[BOJ/solved.ac] [Python] 14567 선수 과목 (0) | 2022.09.10 |