[Codility] Lesson 6 BinaryGap 파이썬

현지·2025년 12월 17일

코테 준비

목록 보기
9/10

문제

배열의 A의 원소 3가지 중
A[P] + A[Q] > A[R],
A[Q] + A[R] > A[P],
A[R] + A[P] > A[Q].
를 만족하는 숫자 3개 찾기

가장 큰 수가 다른 숫자 2개보다 작아야함
삼각형을 만들 수 있는 3 수가 존재하면 1, 아니면 0
시간복잡도 nlogn 이하, 요소 범위 -2,147,483,648..2,147,483,647(음수 싹 다 제외해야함)

코드

정렬시켜서 0이상인 수부터 3개씩 묶어서 검사하면 될 듯
시간복잡도는 2N

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

def solution(A):
    A.sort(reverse = True)

    for idx, num in enumerate(A):
        if idx+2 > len(A)-1 or A[idx+2] < 0: # 음수가 오면 안됨
            return 0
        if A[idx] < A[idx+1] + A[idx+2]: # 삼각형 조건 만족하는지 검사
            return 1

    return 0
profile
헤맨만큼 내 땅이다

0개의 댓글