📝 문제
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정도로 짱구를 굴려야했다.
실제 테스트에 등장하면 점수 비율은 낮지만 시간을 꽤 잡아먹힐 것 같다…
바로바로 방법을 떠올릴 만큼 더 많은 공부가 시급하다!
댓글남기기