[이코테] 정렬, 구현 - 실패율 with 파이썬

JIN KANG·2022년 10월 23일
0

이코테

목록 보기
25/29
post-thumbnail

1. 문제

  • 프로그래머스 카카오 2019 공채 문제와 동일

  • 실패율 : 스테이지에 도달했으나, 아직 클리어 하지 못한 플러이어의 수 / 스테이지에 도달한 플레이어의 수

  • 전체 스테이지의 수 N , 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages

  • 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return

  • 스테이지의 개수는 1-500

  • stages의 길이는 1-200000

  • stages에는 1- N+1이하의 자연수

    • 각 자연수는 현재 도전 중인 스테이지 번호
    • 단 N+1은 마지막 스테이지까지 클리어 한 사용자
  • 실패율이 같은 스테이지가 있다면, 작은 번호의 스테이지가 먼저 오도록

  • 스테이지에 도달한 유저가 없는 경우 스테이지의 실패율은 0

입출력 예시

2. 아이디어

  • 스테이지별 실패율을 생성하여, 스테이지와 함께 저장한다.
    • 해당하는 stage의 수 / 남은 숫자의 수 (갱신되어야 함 )
  • 실패율을 기준으로 내림차순 정렬한다.
  • 스테이지만 리스트에 다시 저장한다.

3. 예제코드

def solution(N, stages):
    answer = []
    length = len(stages)
    
    # 스테이지 번호 증가
    for i in range(1, N+1):
        count = stages.count(i)   # 스테이지에 있는 사람 수 
        
        # 실패율 
        if length == 0:
            fail = 0
        else : 
            fail = count/length
        
        # 스테이지 번호, 실패율 저장
        answer.append((i, fail))
        length -= count 
        
    # 실패율 기준 정렬
    answer.sort(key = lambda x : x[1], reverse=True)  # 실패율이 큰 순서대로 
    answer = [ i[0] for i in answer]  # 스테이지 번호만 저장 
    return answer 

4. 배운점

  • count , sort(key = lambda ) 리마인드

참조

  • 이것이 취업을 위한 코딩테스트다. with 파이썬
profile
성장하는 데이터 분석가

0개의 댓글