[프로그래머스 / Level 1] 실패율 (파이썬)

2022. 5. 7. 16:44·🎲 알고리즘 공부/프로그래머스

📝 문제 요약

>  실패율을 구하는 코드를 완성하라.

( 실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 )

 

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

 

제한사항
입출력 예시

 

 

 

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

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

 

 

🎨 풀이

💡 첫 번째 시도 = 성공 코드

 

def solution(N, stages):
    answer = []
    
    clear_user = len(stages)
    fail_dict = {}
    
    for num in range(1,N+1):        # 실패율 계산
        stage_count = stages.count(num) 
        fail = 0
        
        if stage_count != 0:
            fail = stage_count/clear_user    
        fail_dict[num] = fail
        
        clear_user -= stage_count
        
    answer = sorted(fail_dict, key=lambda x: fail_dict[x], reverse=True)
    
    return answer

> 핵심 => clear_user -= stage_count 부분 & 실패율 딕셔너리에 넣어서 내림차순으로 반환하는 데 이용.

 

* 변수 설명

 - clear_user : 통과한 유저 수 (for문을 돌면서 점점 줄어들 예정)

 - fail_dict : 실패율 내림차순을 원활하게 하기 위한 딕셔너리

 - stage_count : 해당 단계 실패한 사람 수

 - fail : 실패율

 

1. clear_user에 len(stages)를 넣는다. (= 전체 사용자 수)

2. 1 ~ N 단계까지 for 문을 돌린다.

 2-1. stage_count에 해당 단계를 실패한 사람 수를 count해서 넣어준다.

    - stages가 각 사용자의 실패 단계를 다 적어둔 거니까 그대로 count 해주면 된다.

     ex) stages.count(1) = 1단계를 실패한 사람 수

 

 2-2. stage_count가 0이 아니라면, 실패율을 계산해준다. (실패율 = 못 깬 유저 / 클리어 한 유저)

    - 만약 stage_count가 0이라면 fail 초기값인 0을 그대로 적용한다. (이 단계에서 막힌 사람이 없는 경우)

 

 2-3.  fail_dict[num]에 fail 값을 넣어준다.

for문을 다 돌고난 후 fail_dict 상황

3. fail_dict[x], 즉 안에 들어가있는 실패율을 기준으로 내림차순 정렬한 후 return 한다. 

 

 

​끝~

 

 

⭐ 느낀점

 

> 카카오는 카카오다. 그래도 해볼만한 카카오라서 좀 신기했다. LEVEL 1이 이렇게 빡셀 일이냐구. ㅠㅠ. 그리고 자격증 시험 밤 새서 보고난 직후라 그런지 정신이 말짱하지 않다. 글을 열심히 쓴다고 썼는데 횡설수설한거 아닌가 모르겠다. 놓친 거 있나 보려고 계속 검토했는데,, 지금 보면 모르겠다. 그리고 이해가 되게 글을 쓰고 싶었는데 그렇게 잘 된건지도 모르겠다. 나중에 자고 일어나서 다시 한 번 봐야겠다. 이 문제 못 풀 줄 알았는데 푼 거 넘 신기하고, 그리고 변수명이 좀 더 직관적이어야 될 거 같기도 하고. 여튼 그렇다. 하하. 고생했당 ^0^

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 문자열을 정수로 바꾸기 (파이썬)  (0) 2022.05.09
[프로그래머스 / Level 1] 짝수와 홀수 (파이썬)  (0) 2022.05.08
[프로그래머스 / Level 1] 자릿수 더하기 (파이썬)  (0) 2022.05.06
[프로그래머스 / Level 1] 문자열 다루기 기본 (파이썬)  (0) 2022.05.05
[프로그래머스 / Level 2] 전화번호 목록 (파이썬)  (0) 2022.05.04
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 문자열을 정수로 바꾸기 (파이썬)
  • [프로그래머스 / Level 1] 짝수와 홀수 (파이썬)
  • [프로그래머스 / Level 1] 자릿수 더하기 (파이썬)
  • [프로그래머스 / Level 1] 문자열 다루기 기본 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    til
    코드업
    BOJ
    카카오
    코테
    50문답
    연습문제
    nodejs
    정보처리기사
    오버워치
    폰켓몬
    codeup
    백준
    행렬덧셈
    코린이
    신입일기
    컨텐더스
    정처기
    피보나치수
    스프링부트
    프로그래머스
    코민이
    충무로
    오블완
    찬양추천
    일기
    스프링 부트
    파이썬
    티스토리챌린지
    6월 목표
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 1] 실패율 (파이썬)
상단으로

티스토리툴바