[백준][Python] 14215. 세 막대
Bronze Ⅲ 🔗14215. 세 막대
📝문제 요약
문제
영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.
영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.
- 각 막대의 길이는 양의 정수이다
- 세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
- 삼각형의 둘레를 최대로 해야 한다.
a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.
출력
첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.
✏️문제 풀이
- 길이를 입력받아 리스트
line
에 저장 - 길이를 저장한 리스트를 오름차순 정렬
- 짧은 두 막대, 즉 0번 인덱스의 값(
line[0]
)과 1번 인덱스의 값의 합(line[1]
)이 2번 인덱스의 값(line[2]
)보다 크다면- 삼각형을 만족하므로
길이의 합 = 삼각형의 둘레
- 삼각형을 만족하므로
- 그렇지 않다면, 삼각형을 만들 수 있도록 조정
가장 긴 변의의 값 = 작은 두 변의 합 - 1
이 되어야 삼각형이 완성- 삼각형의 둘레 =
line[0] + line[1] + (line[0] + line[1] - 1)
- 삼각형의 둘레가 저장된
result
출력
코드와 함께 보는 풀이
# 3개의 막대의 길이를 입력받아 리스트 line에 저장
line = list(map(int, input().split()))
# 길이를 오름차순 정렬
line.sort()
# 짧은 두 막대의 값이 가장 긴 막대의 값보다 크다면 삼각형의 둘레 = 모든 길이의 합
if line[0] + line[1] > line[2]:
result = sum(line)
# 그렇지 않다면, 삼각형을 만들 수 있도록 조정
else :
# 삼각형의 둘레 = line[0] + line[1] + (line[0] + line[1] - 1)
result = (line[0] + line[1]) * 2 - 1
# 삼각형의 둘레 출력
print(result)
💯제출 코드
line = list(map(int, input().split()))
line.sort()
if line[0] + line[1] > line[2]:
result = sum(line)
else :
result = (line[0] + line[1]) * 2 - 1
print(result)
댓글남기기