본문 바로가기

알고리즘 && 자료구조/백준

[백준 14215] 세 막대 (Feat.Python)

728x90
반응형
SMALL

문제

영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.
영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.

  • 각 막대의 길이는 양의 정수이다
  • 세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
  • 삼각형의 둘레를 최대로 해야 한다.

a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.

풀이

  • 삼각형의 가장 작은 두변의 길이의 합은 가장 긴 변의 길이보다 커야한다.
  • 이를 이용하기위해 입력 받은 수를 모두 배열에 넣어 오름차순으로 정렬해주었다.
  • if문에는 주어진 길이들로 삼각형이 될때
  • else문에는 주어진 길이들로는 삼각형이 되지 않아 가장 짧은 둘레를 가질 수 있도록
    • 가장 작은 두개의 변의 길이를 두배한후 1을 빼주었다.
data = list(map(int, input().split()))
data.sort()

if(data[0]+data[1] > data[2]):
    print(sum(data))
else:
    print(((data[0] + data[1]) * 2)-1)

 

728x90
반응형
LIST