코딩테스트

[프로그래머스][KAKAO_BLIND][2019] 실패율

pythaac 2021. 8. 30. 01:02
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

 

내가 작성한 코드

from collections import Counter
from heapq import heappop, heappush

def solution(N, stages):
    answer = []
    q = []
    n = len(stages)
    stages = Counter(stages)
    for s in range(1, N+1):
        if n != 0:
            heappush(q, (-stages[s] / n, s))
            n -= stages[s]
        else:
            heappush(q, (0, s))

    while q:
        v, s = heappop(q)
        answer.append(s)

    return answer
  • 1~N까지 각 stage 탐색 (낮은 스테이지부터 탐색)
  • Counter
    • 실패율 계산을 위해 Counter 사용
  • heapq
    • 실패율이 높은 순서대로 출력
    • 최대힙을 위해 마이너스로 계산
    • 이미 모든 순위가 정해진 경우
      - 모든 사용자가 N보다 작은 스테이지까지 도달한 경우
      - 실패율은 0
  • n -= stages[s]
    • "스테이지에 도달한 플레이어 수" 계산

 

다른 사람이 작성한 코드

None

 

기억해야할 것

  • heapq로 만들지 않아도 될 것 같다