링크

실패율 - 2019 카카오 블라인드

난이도

  • 중하 정도?

문제 요약

  • 스테이지별로 실패율(도달한인원/도달하고 클리어한인원) 계산

해결법

  • 실패율 공식이 (도달한 인원/도달하고 클리어한인원)이므로 사용자의 스테이지 정보인 stages를 오름차순으로 정렬
  • 전체스테이지 갯수를 중복된 스테이지 갯수로 나누고, 전체스테이지 갯수를 계산한 스테이지 갯수로 빼주는것을 반복한다.

알고리즘 간단 정리

  • 사용자의 스테이지 도달한 정보를 가진 stages를 오름차순으로 정렬
  • 확인할 스테이지 번호 curStage = 1
  • 전체 유저 인원 clears= stages.length
  • 결과 result = []
  • 같은 스테이지에 도달한 인원 카운트 count = 1;
  • stages길이만큼 i=(0 ~ stages.length)를 반복
    • j를 curStage부터 시작하여 stages[i]보자 작을때까지 반복 - curStage가 현재 계산할 스테이지 번호이고, stages[i]와 다르면 계산 수행
      • 실패율계산 count-1 / clears
      • 현재 스테이지를 다음 스테이지 번호로 curStage+1
      • 전체 클리어 인원 clears-(count-1)
      • 카운트 초기화 count = 1
    • count+1
    • 마지막인 경우
      • 실패율 계산
  • 실패율을 내림차순으로 정렬하고 해당 index를 따로 저장하여 출력

후기

  • 알고리즘을 좀 복잡하게 진행하다보니 시간이 오래걸렸다.
  • 좀더 효율적이고 보기좋게 할 수 있을거같다.
  • 아무래도 스테이지가 0부터 시작안하기도 하고, 계산하기위한 변수 선언에서 복잡하게 선언해 보기가 않좋다.
  • 최대한 구현하는데 헷갈리는 수가 없도록 해야 겠다.

아이디어

  • 배열 계산