열심히 고민하며 짠 코드가 정답이긴 했다. 그런데 sorted를 활용하면 훨씬 더 간결하게 짤 수 있더라!
1. 내가 짠 코드
a, b, c = map(int, input().split())
if max(a, b, c) < a + b + c - max(a, b, c):
print(a+b+c)
else:
print((a + b + c - max(a, b, c))*2 - 1)
- 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 크지 않는다는 성질을 이용했다.
- 그래서 받은 세 변이 처음부터 삼각형의 조건을 만족하면 끝.
- 아닐 때는 둘레가 가장 커야 하므로 가장 큰 변의 길이가 나머지 두 변의 길이보다 딱 1만큼만 작으면 된다.
2. sorted 사용
a, b, c = sorted(map(int, input().split()))
if c < a + b:
print(a+b+c)
else:
print((a+b)*2 - 1)
- sorted를 사용하여 세 변의 길이를 오름차순으로 받았다.
- 그래서 max 같은 걸 쓸 필요 없이 가독성 높게 코드를 짤 수 있었다.
- 원래 sorted는 리스트를 반환해주는데 그냥 시험삼아 변수를 넣어줬더니 제대로 받더랑
- 찾아보니까 파이썬의 언패킹 덕분이라고 한다. 리스트의 길이와 변수의 개수가 같기 때문에 오류가 발생하지 않은 것!
sorted vs sort
- list.sort()는 list를 정렬해서 반환
- sorted(list)는 정렬된 새로운 리스트를 만들어서 반환
결과

당연히 걸린 시간은 똑같당