[Programmers] 카카오 블라인드 코딩테스트 - 실패율

hodu·2022년 10월 12일
0

algorithm

목록 보기
8/27

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

코딩테스트 연습 - 실패율

문제의 핵심

  1. 스테이지에 도달한 플레이어 수를 잘 생각해야 한다.
    만약 [1,1,1,2]에서 2단계에 도달한 플레이어는 단 한명 뿐

  2. 0으로 나눌 수 없다. 👉 파이썬에서 자동으로 처리해주지 않으니 이 부분을 간과하면 런타임 오류가 난다!

코드를 확인하면서 공부해보자.

def solution(n, stages):
    stages_length = len(stages)
    failure_rate = []
    answer = []

    for i in range(1,n+1):
        if stage.count(i) == 0:
            failure_rate.append(0)
            continue
        failure_rate.append(stages.count(i)/stages_length)
        stages_length -= stages.count(i)

    for j in range(n):
        answer.append(failure_rate.index(max(failure_rate))+1)
        failure_rate[failure_rate.index(max(failure_rate))] = -1
        
    return answer
  1. stage_length는 스테이지 통과 인원을 빼야한다는 연산이 필요하므로 변수로 넣어 처리해준다.

  2. failure_rate에는 '스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수' 즉 실패율을 넣어 줄 것이다.

  3. answer에는 failure_rate에서 가장 큰 값의 인덱스 값을 가져와서 순서대로 넣어준다.

그리고 가장 중요한 if문!

    if stage.count(i) == 0:
        failure_rate.append(0)
        continue

만약 아예 통과한 사람이 없어서 count 값이 0이 된다면 0으로 다른 숫자를 나눌 수 없다.
그렇기 때문에 조건을 넣어줘야 한다.

마지막으로 answer에는 가장 큰값의 인덱스를 조사해서 넣어준다.

얼마 안걸려서 매우 뿌듯 !

profile
안녕 세계!

0개의 댓글