📝 문제

https://programmers.co.kr/learn/courses/30/lessons/42889

🎯 풀이

2019 KAKAO BLIND RECRUITMENT에 출제되었던 문제.
해시테이블을 이용해서 풀어냈다.

def solution(N, stages):
    stageTable, failedTable = {}, {}
    stages.sort() # 각 스테이지 오름차순 정렬
    totalChallenger = len(stages) # 총 도전자 수
    # 각 도전자가 도전 중인 스테이지를 해시테이블에 등록
    for stage in stages:
        if stage in stageTable:
            stageTable[stage] += 1
        else:
            stageTable[stage] = 1

    # 1~N+1 까지 스테이지에 대해 실패율 계산 후 등록.
    for n in range(1, N+1):
        if n in stageTable:
            failedTable[n] = stageTable[n] / totalChallenger
            totalChallenger -= stageTable[n]
        else:
            failedTable[n] = 0
    
    # 실패율 기준 내림차순 (실패율이 같으면 스테이지 번호 오름차순) 정렬
    failedTable = sorted(failedTable.items(), key=lambda x: x[1], reverse=True)
    return [stage for stage, fail in failedTable]

👏 성공!

LEVEL 1으로 분류되어 있지만, LEVEL 2정도로 짱구를 굴려야했다.
실제 테스트에 등장하면 점수 비율은 낮지만 시간을 꽤 잡아먹힐 것 같다…
바로바로 방법을 떠올릴 만큼 더 많은 공부가 시급하다!

댓글남기기