포시코딩

[프로그래머스][Lv.0] 삼각형의 완성조건 (1) 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0] 삼각형의 완성조건 (1)

포시 2022. 12. 27. 15:20
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120889

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

def solution(sides):
    for x in sides:
        if x >= sum(sides)-x:
            return 2
    return 1

list sides에 대해 하나씩 돌아서 나온 요소와 그 요소를 제외한 값의 합을 비교하는 것이므로

이렇게 코드를 짰다.

근데 풀고나서 문제를 다시 보니 

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

'가장 긴 변의 길이'로 비교한다는걸 놓쳤다..

그렇다면

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

이렇게 for문 없이도 작성할 수 있다.

다른 풀이 A

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

Python의 삼항연산자를 이용했다.

 

다른 풀이 B

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

max()를 안쓰고 sort() 후 제일 마지막 요소를 통해 제일 긴 변의 길이를 찾은 경우

728x90