1448번: 삼각형 만들기
첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다
www.acmicpc.net
세준이는 N개의 빨대를 가지고 있다. N개의 빨대 중에 3개의 빨대를 선택했을 때, 이 빨대로 삼각형을 만들 수 있다면, 세 변의 길이의 합의 최댓값을 구하고 싶다.
입력
첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 삼각형 세 변의 길이의 합의 최댓값을 출력한다. 만약 삼각형을 만들 수 없으면 -1을 출력한다.
예제 입력 1 복사
3
1
2
3
예제 출력 1 복사
-1
예제 입력 2 복사
3
1
2
2
예제 출력 2 복사
5
예제 입력 3 복사
6
2
3
2
3
2
4
예제 출력 3 복사
10
예제 입력 4 복사
5
4
5
6
7
20
예제 출력 4 복사
18
import sys
sys.stdin = open("20220826_백준_1448_삼각형만들기.txt", "r")
n = int(sys.stdin.readline().rstrip())
numList = []
for i in range(n) :
line = int(sys.stdin.readline().rstrip())
numList.append(line)
def solution(n, numList) :
answer = 0
numList.sort() #정렬해야한다.
#뒤에서부터 3개 비교해서
#a + b 가 c보다 큰 경우를 찾는다
for i in range(len(numList)-1, 1, -1) :
a, b, c = numList[i-2], numList[i-1], numList[i]
#print(a, b, c)
if a + b > c :
answer = a + b + c
break
if answer > 0 :
return answer
else :
return -1
print(solution(n, numList))
# 6
# 2
# 3
# 2
# 3
# 2
# 4
'코테풀이 > 그리디' 카테고리의 다른 글
[백준 | 실버3 ] 20365: 블로그2(문자열, 그리디) (0) | 2022.09.02 |
---|---|
[백준 | 실버2] 나무 자르기(그리디, 정렬) (0) | 2022.08.26 |
[백준 : 실버2] 한 줄로 서기(그리디) (0) | 2022.08.19 |
[프로그래머스 | 레벨2] 큰 수 만들기(그리디, 숫자 제거해서 큰수만들기) (0) | 2022.04.12 |
[프로그래머스 | 2단계] 구명보트(그리디, 가벼운사람-무거운사람태우기) (0) | 2022.04.12 |
[백준 : 실버3] 1448번 : 삼각형 만들기(그리디, 정렬)