[백준] 1448번 삼각형 만들기

거북이·2023년 1월 22일
0

백준[실버3]

목록 보기
48/92
post-thumbnail

💡문제접근

  • 삼각형의 결정 조건에 따르면 삼각형을 만들기 위해서는 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 작아야 한다.
  • N개의 빨대 중에 3개의 빨대를 선택했을 때, 정렬하여 가장 뒷부분에 있는 빨대로 만들면 삼각형의 세 변의 길이의 합의 최댓값을 구할 수 있다.

💡코드(메모리 : 75368KB, 시간 : 1416ms)

import sys

N = int(input())
li = []
for _ in range(N):
    li.append(int(sys.stdin.readline().strip()))

li.sort()
max_val = 0
for i in range(N-2):
    if li[i] + li[i+1] > li[i+2]:
        if max_val < li[i] + li[i+1] + li[i+2]:
            max_val = li[i] + li[i+1] + li[i+2]
    else:
    	# 만약 3개의 빨대를 골라서 삼각형을 만들 수 있었다면?
        if max_val > 0:
            continue
        # 만약 3개의 빨대를 골라서 삼각형을 만들 수 없다면?
        else:
            max_val = -1
print(max_val)

💡소요시간 : 5m

0개의 댓글