코딩문제풀이/파이썬

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

오늘밤공부 2023. 3. 9. 10:48
반응형

🗓️ 문제 설명

  • 실패율을 구하는 코드를 완성하려고 합니다.
  • 실패율은 (스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수)로 구할 수 있습니다.
  • 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 주어집니다.
  • 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 반환하세요.
  • 제한 사항
    • 1 ≤ 스테이지의 개수 N ≤ 500
    • 1 ≤ stages의 길이 ≤ 200000
    • stages에는 1이상 N+1이하의 자연수가 담겨있음
       >> stages의 자연수는 사용자가 현재 도전중인 스테이지의 단계
       >> N+1은 마지막 스테이지까지 클리어한 사용자
    • 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 함
    • 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0으로 정의
  • 입출력 예시
N stages result
5 [2, 1, 2, 6, 2, 4, 3, 3] [3, 4, 2, 1, 5]
4 [4, 4, 4, 4, 4] [4, 1, 2, 3]

 

💻 코드

최종 코드

  • 수정 사항
    >> 실패율이 0인 경우의 불필요한 계산을 줄이기 위해 cnt가 0인 경우를 조건문으로 추가
    >> stages를 정렬하여 불필요한 반복문을 제거

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2번줄 : 실패율을 저장할 딕셔너리 생성
  2. 3번줄 : stages의 길이를 분모로 저장
  3. 4번줄 : stage 1 부터 stage N 까지 반복하는 반복문 생성
  4. 5번줄 : 분모가 0인지 확인
  5. 6번줄 : stage에 머물러있는 사람 수를 저장
  6. 7번줄 : result에 stage와 실패율을 저장
  7. 8번줄 : 다음 stage를 통과하는 사람 수를 분모에 저장
  8. 9번줄 : 분모=0 이라면 남은 스테이지의 실패율은 0으로 저장
  9. 11번줄 : 실패율을 기준으로 스테이지를 정렬하여 반환

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 케이스 1, 6, 7, 9, 13, 23, 24, 25에서 런타임 에러 발생

 

반응형