본문 바로가기
프로그래밍/알고리즘 & 자료구조

[프로그래머스] 삼각형의 완성조건 (2) with 파이썬

by Play_With 2023. 4. 9.
반응형

[프로그래머스] 삼각형의 완성조건 (2) with 파이썬

- 삼각형 완성 조건 : 가장 긴 변 < 다른 두 변의 합

- 가장 긴 변이 sides 내에 있는지 아닌지를 나누고 진행해야 한다.


sides = [1, 2]  ## 답 1

 

1. range()

def solution(sides):
    result = 0
    # sides 안에 가장 긴 변이 있는 경우
    for i in range(1, max(sides)):
        if i + min(sides) > max(sides):
            result += 1

    # sides 안에 가장 긴 변이 없는 경우
    for i in range(max(sides), sum(sides)):
        if sum(sides) > i:
            result += 1

    return result

 

1-1. list compression

def solution2(sides):
    n1 = len([i for i in range(1, max(sides)) if i + min(sides) > max(sides)])
    n2 = len([i for i in range(max(sides), sum(sides))])
    return n1 + n2

 

2. 공식

def solution3(sides):
    return 2 * min(sides) - 1

 

알고 있는 변의 길이 : b < a이고, 새로운 변 : c 일때

1.  c가 가장 긴 변이 될 때 : a < c < a+b

이때 가능한 c의 갯수는 c < b 이므로 b-1개가 된다.

 

2. c가 가장 긴 변이 아닐 때 : a가 가장 긴변이 된다. c < a < a+b

이때 가능한 c의 갯수는 c < b 이므로 b-1개가 된다.

 

3. c=a 일 때는 1가지 경우 밖에 없다.

 

1+2+3의 경우의 수를 다 더하면 2b-1이며, 맨 처음 설정한 b < a를 고려하면, b는 sides의 작은 값이 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글