백준 14215번 풀이

BOJ/[BOJ] Python 2023. 6. 30. 23:49
반응형

문제

https://www.acmicpc.net/problem/14215

 

14215번: 세 막대

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

www.acmicpc.net

막대기 세 개가 주어졌을 때, 이걸로 만들 수 있는 삼각형의 최대 둘레는?

 

풀이

이 문제 보자마자 본인 표정:

근데 이 문제, 막상 풀어보면 쉽다. 아니 진짜 쉽다니까요? 앞에서 풀었던 세 변으로 삼각형 판별하는 문제에 나왔던 부등식만 기억하면 진짜 금방 풀린다. 삼각형 부등식에서 제일 긴 변 >= 나머지 두 변 길이의 합이면 삼각형이 성립 안 된다고 했잖아요? 요것만 딱 기억하시면 됨.

 

import sys

byeon = list(map(int,sys.stdin.readline().split()))

뭐야 배열로 가져와요? 예, 배열로 가져옵니다. 왜냐하면 제일 긴 변이 필요하거든...

 

import sys

byeon = list(map(int,sys.stdin.readline().split()))
byeon.sort()

정렬까지 하면 준비는 끝났다. 이렇게 하면 제일 긴 변은 해당 배열의 맨 끝이 되니까, 로직만 짜면 된다. 

 

이 문제에서 로직을 어떻게 짤 거냐... 간단하다. 제일 긴 변이 나머지 두 변의 합보다 크거나 같으면 후가공 절차를 들어가고, 아니면 그대로 리스트 합을 출력하면 된다. 2, 2, 2는 2 < 2+2이기때문에 그냥 합을 통으로 더하면 되지만, 만약 4 2 2라면 4 = 2+2니까 후가공 절차가 필요하다.

 

import sys

byeon = list(map(int,sys.stdin.readline().split()))
byeon.sort()

if byeon[2] >= byeon[1] + byeon[0]:
    byeon[2] = byeon[1] + byeon[0] - 1
    print(sum(byeon))
else: 
    print(sum(byeon))

자 생각해봅시다. 나머지 두 변의 합보다 작으면 삼각형이 성립된다. 예시에 나왔던 1 100 1도 다른 두 변의 합인 2보다 작은 정수, 1로 잘라서 1+1+1 해서 3이다. 그니까 제일 긴 변이 나머지 두 변의 합보다 크거나 같으면, 나머지 두 변의 길이의 합에서 1을 뺀 만큼만 남기고 막대기를 자르면 된다. 그죠?

반응형

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 24263번 풀이  (0) 2023.07.05
백준 24262번 풀이  (0) 2023.07.03
백준 5073번 풀이  (0) 2023.06.28
백준 10101번 풀이  (0) 2023.06.27
백준 9063번 풀이  (0) 2023.06.26
Lv. 36 라이츄

Lv. 36 라이츄

광고 매크로 없는 청정한 블로그를 위해 노력중입니다. 근데 나만 노력하는 것 같음… ㅡㅡ

방명록