[이.취.코] [프로그래머스] Chap 14. 정렬 - Q25. 실패율

1. 실패율

A. 📜 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

B. 💡 내 답안

a. 😊 1차 시도 (성공)

def solution(N, stages):
    # fail_per = [0] * (N + 1)
    no_clear = [0] * (N + 1)
    player_count = [0] * (N + 1)
    answer = []

    for stage in stages:
        no_clear[stage - 1] += 1

        for i in range(stage):
            player_count[i] += 1

    fail_per = [0] * (N + 1)

    for i in range(N + 1):
        if no_clear[i] == 0 or player_count[i] == 0:
            fail_per[i] = [i, 0]
        else:
            fail_per[i] = [i, (no_clear[i] / player_count[i])]

    fail_per = fail_per[:N]
    fail_per.sort(reverse=True, key=lambda x: [x[1], -x[0]])

    for i in fail_per:
        answer.append(i[0] + 1)

    return answer

# 16분
solution(5,     [2, 1, 2, 6, 2, 4, 3, 3])

b. 🙄 회고

내 풀이

  • 실패율에 필요한 플레이어의 수를 구하고 실패율을 계산하였다.
    • 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수
    • 스테이지에 도달한 플레이어 수
  • result로 필요한 값은 스테이지 번호이기 때문에 실패율을 계산할 때는 스테이지 번호와 실패율을 1차원 리스트로 생성하여 실패율 리스트에 포함시켰다.

반성

  • 리스트의 count메소드를 사용했으면 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수를 구할 수 있었을텐데.

C. 🧐 문제 해설

이해한 내용을 바탕으로 작성했습니다.

  • 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수
    • 이것은 stages 변수에 들어있는 값을 count해주면 된다.
  • 스테이지에 도달한 플레이어 수
    • 이것은 0부터 각각의 stages 변수에 들어있는 값까지 반복문을 돌려서 count하면 된다.
  • 실패율 계산하기
    • 실패율 리스트를 만들 때는 현재 stage 번호를 실패율과 같이 포장해야 한다. (리스트로 만들어야 한다.)
a. 책 답안

python-for-coding-test/3.py at master · ndb796/python-for-coding-test (github.com)

참고문헌

[1] 나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

[2] 위클리 챌린지.코딩테스트 연습 - 실패율 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Oct 8, 2021)

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.