Algorithm

Baekjoon 백준 알고리즘 - 삼각형 만들기

jssvs 2022. 5. 1. 21:39
반응형

1. 문제 소개

  • 수학 유형 문제에 해당한다.

 

2. 코드 

import sys
input = sys.stdin.readline

# 1) 빨대 길이가 저장된 배열을 정렬
# 2) 가장 긴 쪽 부터 3개의 빨대로 삼각형 성립 조건 을 검사
# 3) IF 성립조건  = True  -> 삼각형 변의 합 계산 후 출력
# 4) IF 성립조건 = False -> 다음 크기의 빨대로 이동


def set_test_case():
    N = int(input())
    n_side = []
    for i in range(0,N):
        n_side += [int(input())]

    return n_side


def isValidTriangle(triangle):
    t_side = sorted(triangle,reverse=True)
    # 가장 긴 변 = C
    # 삼각형 성립 조건  C < A + B
    if t_side[0] < (t_side[1] + t_side[2]):
        return True
    else:
        return False
    
def solution():
    n_side = set_test_case()
    n_side = sorted(n_side)
    maximum_sum_triangle = -1
    for i in range(len(n_side)-1,1,-1):
        if isValidTriangle(n_side[ (i - 2) : (i + 1 )]):
            maximum_sum_triangle = sum(n_side[ (i - 2) : (i + 1 )])
            break
        
    print(maximum_sum_triangle)

solution()

3. 코멘트

  • 파이썬으로 제출 시 런타임에러가 발생한다면,  sys.stdin 패키지의 입력함수를 이용하길 권한다.
  • 오랜만에 유진님, 용범님과 재밌게 문제 풀이했다. 
반응형