Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 14215번 - 세 막대 (PYTHON 풀이) 본문
문제:

해당 문제는 입력값을 더해서 삼각형을 만들 수 있는 조건이 되면 전체 둘레를, 그렇지 못하면 막대의 길이를 조절하여 삼각형을 만들어내고 이에 대한 둘레를 구하면 되는 문제이다. 주의해야할 점은 둘레를 최대로 하는 것이기 때문에 가장 긴 길이를 최소한으로만 줄여서 즉, 삼각형을 만들어낼 수 있는 조건을 충족하되 가장 긴 길이로 만들고 이를 출력하면 된다.
풀이:
a,b,c=map(int,input().split())
k=[a,b,c]
q=max(k)
k.remove(q)
if q<sum(k):
print(sum([a,b,c]))
else:
print((sum(k)-1)+sum(k))
삼각형이 되려면 가장 긴 길이를 제외하고, 나머지 변 길이를 더했을 때 가장 긴 길이보다 길어야 한다.
내가 작성한 코드 같은 경우는 길지만 최대한 직관적으로 작성하려고 했기 때문에 어떤 걸 하려고 했는지 이해가 될 것이다.
입력을 받고 이를 리스트에 담는다. 그 후 가장 긴 길이를 q에, 그 외에 두 변은 k 리스트에 냅둔 다음 조건문을 실행한다.
나머지 두 변을 더한 다음 가장 긴 길이보다 크면 삼각형의 조건이 맞기 때문에 둘레를 전부 더한 수를 출력하면 되고, 그렇지 않으면 가장 긴 길이를 최소한만큼만(1) 줄여서 바꾼 뒤 나머지 두 변을 더해서 출력하면 된다.
다른 아이디어로는 sorted 함수를 활용해서 입력받은 수를 오름차순으로 정리하고 [0], [1] 인덱스 위치를 나머지 두 변, [2]를 가장 긴 변으로 두고 min 함수로 [2]와 ([0]+[1]-1) 중 작은 것을 출력하면 조건문 없이도 좀 더 간단하게 풀 수 있을 거 같다.
'CODING 💻' 카테고리의 다른 글
| 백준 2292번 - 벌집 (PYTHON 풀이) (0) | 2025.09.14 |
|---|---|
| 백준 9063번 - 대지 (PYTHON 풀이) (0) | 2025.09.13 |
| 백준 5073번 - 삼각형과 세 변 (PYTHON 풀이) (0) | 2025.09.11 |
| 백준 15894번 - 수학은 체육과목 입니다 (PYTHON 풀이) (0) | 2025.09.10 |
| 백준 3009번 - 네 번째 점 (PYTHON 풀이) (0) | 2025.09.10 |
