Lv0.삼각형의 완성조건(1)

zz·2023년 2월 22일
0

프로그래머스

목록 보기
12/36
post-custom-banner

[삼각형의 완성조건(1)]

문제 설명

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 3입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

풀이

내 풀이

def solution(sides):
    answer = 2
    maxside = max(sides)
    sumoftwo = sum(sides)-maxside
    if (sumoftwo >maxside):
        answer = 1
    return answer

사이드 3개 중에서 가장 긴변을 먼저 고르고, 나머지 두 변의 합은 전체 합에서 해당 변을 빼서 계산한다.
긴변의 길이와 나머지 두변의 길이 합을 비교하고 결과를 도출한다.
여전히 코드는 번잡하고 길다 이해하기 쉽게 더 짧게 쓸 수 있는데 아쉽다

다른 풀이 1

def solution(sides):
    return 1 if max(sides) < (sum(sides) - max(sides)) else 2

내가 여섯줄에 걸쳐서 짠 코드를 단 한줄만에.. 짜버린 코드ㅋㅋㅋ

다른 풀이 2

def solution(sides):
    sides.sort()
    return 1 if sides[0]+sides[1]>sides[2] else 2

응.. sorting은.. 생각 안했다.. 생각이 안났다
이게 제일 쉬운 방법이었는데 ㅋㅋ... 세상에나

다른 풀이 3(?)

def solution(sides):
    a,b,c = sides
    S = a+b+c
    if S>2*a and S>2*b and S>2*c:
        return 1
    else:
        return 2

처음에 보고 이해가 잘 안갔는데 잠시 쳐다봤더니 이해가 간다 max를 빼고 합을 구한게 아니라 전체합을 구해서 비교하는거였음 max가 뭔지 모르기도 하고, 이 경우에는 3개를 다 비교하게 되어있으니 and로 이어서 조건문을 달아준것
흠..

profile
응애 나 애기개발자
post-custom-banner

0개의 댓글