티스토리 뷰
반응형
🚀 카카오 실패율 풀이
🌠 내 풀이(틀린것)
def solution(N, stages):
answer = []
player = [0] * (max(stages)+1)
length = len(stages)
for i in stages:
player[i] += 1
j=0
for i in player:
j +=1
if length == 0:
fail = 0
else:
fail = i / length
answer.append((j,fail))
length -= i
answer = sorted(answer, key=lambda t: t[1], reverse=True)
answer = [i[0] for i in answer]
return answer
n = 5
stages = [2, 1, 2, 6, 2, 4, 3, 3]
solution(n,stages)
🌠 정확한 풀이
def solution(N, stages):
answer = []
length = len(stages)
for i in range(1, N + 1):
count = stages.count(i)
if length == 0:
fail = 0
else:
fail = count / length
answer.append((i, fail))
length -= count
answer = sorted(answer, key=lambda t: t[1], reverse=True)
answer = [i[0] for i in answer]
return answer
n = 5
stages = [2, 1, 2, 6, 2, 4, 3, 3]
solution(n,stages)
🌠 개선
계수 정렬로 접근하여 계산하는 시도는 좋았지만 시간 복잡도가 O(2*N)
이며 실패율 계산은 정확했지만 출력을 위한answer.append()
에 문제가 있었다.
특히나 반복문은 player
배열 요소를 하나씩 출력하기보다 1 ~ N+1 으로 반복하여 계산하는 것이 좋았다.
계수 정렬 코드의 개선점으로 파이썬 에서는 arr.count(요소)
메소드가 있다.
반복문 내부에 계수정렬 메소드를 한번에 넣는 다면 충분히 O(N)
복잡도를 구현할 수 있다.
🌠 손 코딩
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2020 카카오 문자열 압축 (0) | 2021.04.20 |
---|---|
2018 카카오 캐시 (0) | 2021.04.20 |
2018 카카오 비밀지도 (0) | 2021.04.20 |
2019 카카오 후보키 (0) | 2021.04.20 |
2021 카카오 광고 삽입 (0) | 2021.04.20 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nginx
- 릿코드
- 프로그래머스
- 백준
- 디자인패턴
- 스프링부트
- docker
- 수학
- CS
- Spring
- JPA
- java
- Matlab
- C언어
- ajax
- 그래프
- springboot
- 면접
- interview
- Solid
- OOP
- 자바
- 자격증
- Algorithm
- spring-cloud
- security
- 스프링
- 매트랩
- 알고리즘
- kakao
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함