링크
실패율 - 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부터 시작안하기도 하고, 계산하기위한 변수 선언에서 복잡하게 선언해 보기가 않좋다.
- 최대한 구현하는데 헷갈리는 수가 없도록 해야 겠다.
아이디어