2019 KAKAO BLIND RECRUITMENT 실패율 (lv1)

정답 코드 1

def solution(N, stages):
    answer = []
    arrive = [0 for i in range(N + 2)]
    current = [0 for i in range(N + 2)]

    for s in stages:
        for j in range(1, s + 1):
            arrive[j] += 1
        current[s] += 1

    print(arrive)
    print(current)
    temp = []
    for i in range(1, N + 1):
        if arrive[i] == 0:
            temp.append([0, i])
        else:
            temp.append([current[i] / arrive[i], i])

    print(temp)
    temp.sort(reverse=True, key=lambda x: x[0])
    for i in range(N):
        answer.append(temp[i][1])

    return answer

정답 코드 2

def solution(N, stages):
    answer = {}
    players = len(stages)
    
    for i in range(1, N + 1):
        if players != 0:
            current = stages.count(i)
            answer[i] = current / players
            players -= current
        else:
            answer[i] = 0
            
    return sorted(answer, reverse = True, key = lambda x : answer[x])

배운 점

첫 번째 코드에 비해 두 번째 코드의 실행 속도가 많이 빠르다.
시간 복잡도 향상을 위한 고민이 부족하다.

dun dun dance 들으면서 코딩하면 좋다.

좋은 웹페이지 즐겨찾기