코딩테스트

codility - sort (Distinct, MaxProductOfThree, Triangle, NumberOfDiscIntersections)

@서비 2022. 6. 8. 00:13

코딜리티에서 예제 Sort를 풀어 보았다.

주요한 문제 해결 전략은 입력된 데이터를 소팅하고 나서 답을 찾는 것 이다.

 

 

1번 문제는 set으로 중복을 제거하고 개 수를 리턴 했다.

def solution(A):
    B=set(A)
    return len(B)

 

2번문제는 sort 이후에 최대값을 찾는 형태로 음의 입력이 있는 것을 감안하여 CASE가 하나 더 나오는 것이 주요 했다.


def solution(A):
    B = A.sort()

    if A[0]*A[1]*A[-1]> A[-1]*A[-2]*A[-3]:
        return A[0]*A[1]*A[-1]
    else:
        return A[-1]*A[-2]*A[-3]

 

 

3번문제는 input 이 특정 숫자 이하 일 때 예외처리, sort 이후에 순차적으로 1회 탐색 하는 형태로 해결 하였다.

def solution(A):
    if len(A)<3:
        return 0

    A.sort()

    for i in range(0,len(A)-2):
        if A[i]+A[i+1]>A[i+2]:
            return 1
    return 0

 

4번 문제는 전혀 풀지 못했고, 정답을 찾아 확인하고 작성해 보았다.

 

def solution(A):
    disc = []
    for i, v in enumerate(A):
        disc.append((i-v, -1))
        disc.append((i+v, 1))

    disc = sorted(disc)
    t = 0
    r = 0

    for d in disc:
        print(d,t,r)
        if d[1] == 1:
            t -= 1
        else :
            r += t
            t += 1