[백준] 14215: 세 막대 - 파이썬[python] (feat. sorted)

다인·2024년 8월 24일

백준

목록 보기
44/112
post-thumbnail

열심히 고민하며 짠 코드가 정답이긴 했다. 그런데 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)는 정렬된 새로운 리스트를 만들어서 반환

결과

당연히 걸린 시간은 똑같당

0개의 댓글