1. 문제
- 이번 문제 역시 매우 쉬운 편으로 문제 요구사항을 구현하면 된다.
2. 풀이
- 여러가지 풀이가 있겠지만 아래 풀이는 좀 지저분한편
- stages 배열을 순회하며 각 스테이지에 몇 명 도달했고 몇 명 멈춰있는지 저장
- 실패율을 계산하고 0으로 나누지 않도록 주의(문제에 명시되어있음)
- 사실 가장 어려운 부분은 정렬인데 실패율은 내림차순으로, 실패율이 같은 경우는 오름차순으로 정렬해야한다.
* 참고
1) 파이썬 다중정렬
비교할 아이템의 요소가 복수 개일 경우, 튜플로 그 순서를 내보내주면 된다.
ex. sorted(e, key = lambda x : (x[0], -x[1]))
-를 붙이면, 현재 정렬차순과 반대로 하게 된다.
2) 람다(Lambda)
lambda 인자 : 표현식
def sum(a, b) :
return a + b
>> sum(1, 2)
3
>> (lambda a, b: a + b)(1, 2)
3
3. 코드
from collections import defaultdict
def solution(N, stages):
answer = []
total = defaultdict(int)
cur = defaultdict(int)
temp = []
for n in stages :
for i in range(1, n+1) :
total[i] += 1
cur[n] += 1
for i in range(1, N+1) :
if total[i] != 0 :
temp.append([cur[i]/total[i], i])
else :
temp.append([0, i])
temp.sort(key = lambda x : (-x[0], x[1]))
for order in temp :
answer.append(order[1])
return answer
4. 개선
- 전반적으로 지저분
- 나중에 돌아와서 고치자 ^^
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT- 무지의 먹방 라이브, 파이썬 (0) | 2021.02.25 |
---|---|
2019 KAKAO BLIND RECRUITMENT- 후보키, 파이썬 (0) | 2021.02.25 |
2019 KAKAO BLIND RECRUITMENT - 오픈채팅방, 파이썬 (0) | 2021.02.23 |
2020 KAKAO BLIND RECRUITMENT - 가사 검색 (파이썬) (0) | 2021.02.19 |
카카오 코딩테스트 2020 괄호 변환, 파이썬 (0) | 2021.02.17 |