개발자일걸요..?

실패율 본문

알고리즘코딩/Programmers

실패율

Re_A 2021. 7. 25. 16:15
728x90
반응형

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

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

(프로그래머스 > 코딩테스트 연습 > 2019 카카오 블라인드 채용 > 실패율(level1))

 


 

<문제>

 

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

이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.

  • 실패율은 다음과 같이 정의한다.
    • 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.

 


 

<내가 작성한 코드>

 

def solution(n, stages):
    people = len(stages)
    level = []
    for i in range(1,n+1):
        level.append(stages.count(i));

    rates = []
    for i in range(0,n):
        if people==0:
            rates.append(0)
        else:
            rates.append(level[i]/people)
            people-=level[i]

    sortedRates = sorted(rates,reverse=True)

    answer=[]
    for i in range(0,n):
        for j in range(0,n):
            if(sortedRates[i]==rates[j]):
                answer.append(j+1)
                rates[j]=-1
                break
    return answer

 

 

<다른 사람의 풀이를 참고해서 작성한 코드>

def solution(n, stages):
    answer = {}
    people = len(stages)
    for stage in range(1, n+1):
        if(people==0):
            answer[stage]=0
        else:
            participate = stages.count(stage)
            answer[stage] = participate / people
            people -= participate

    return sorted(answer, key=lambda x : answer[x], reverse=True)

 


 

<참고한 개념>

 

  • [] -> 리스트 (배열을 선언&초기화할 때, 배열의 원소에 접근할 때 사용)
  • {} -> 딕셔너리(딕셔너리를 선언&초기화할 때 사용// 여기서 []는 key에 대응하는 value 할당 or value에 접근)

 

lambda식 표현 -> lambda 인자:표현식

위의 코드에서는 x:answer[x] 이기에 answer를 리스트가 아니라 딕셔너리로 표현해야함. (x는 키, answer[x]는 value)

반응형

'알고리즘코딩 > Programmers' 카테고리의 다른 글

가운데 글자 가져오기  (0) 2021.07.25
약수의 합  (0) 2021.07.25
내적  (0) 2021.07.25
3진법 뒤집기  (0) 2021.07.25
소수 만들기  (0) 2021.07.24
Comments