[프로그래머스][파이썬] 삼각형의 완성조건 (2) - 수학 (Level 0)

뻥튀기아이스크림·2025년 3월 24일
1
post-thumbnail

◽ 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120868

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

def solution(sides):
    answer = 0
    max_side = max(sides)
    min_side = min(sides)
    
    # sides에 있는 변(max_sides)이 가장 길 경우
    for new_side in range(max_side - min_side + 1, max_side + 1):
        answer += 1
        
    # 새로운 변(new_side)가 가장 길 경우
    for new_side in range(max_side + 1, max_side + min_side):
        answer += 1
        
    return answer
  • 두 가지 경우의 수를 나눌 수 있는데, 주어진 배열에 있는 길이가 가장 길 경우와 나머지 한 변이 가장 길 경우이다.
  • 첫 번째 for 문이 기존 변의 길이가 제일 길 경우인데, 해당 길이가 나머지 두 변의 길이의 합보다 작아야 하므로, 새로운 변의 길이는 max_side - min_side + 1 부터 max_side 까지 될 수 있다.
  • 두 번째 for 문에서는 나머지 한 변이 가장 길 경우인데, 그 길이는 주어진 길이보다는 커야하니 max_side + 1 부터 시작하고, 두 변의 길이의 합보다는 작아야하니 max_side + min_side - 1 까지 세어준다.

◽ 다른 사람 풀이

def solution(sides):
    return sides[0] + sides[1] - abs(sides[0] - sides[1]) - 1
  • 수학적인 내용으로 많이 풀이한것 같다.
  • 세 번째 변을 x 라고 할 때, 삼각형의 조건은 |a - b| < x < a + b 이다.
  • 그러니 가능한 정수 x 의 개수는 a + b - |a - b| - 1 개 이다.
  • 이를 코드로 옮긴 풀이이다.

◽ 더 나아가기

  • 단순히 개수를 구하려면 수학적인 내용이 들어가지만, 모든 값을 확인하려면 위의 코드가 접근하기 좋아보인다.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글