1. 문제
programmers.co.kr/learn/courses/30/lessons/42889
2. 풀이
우선 딕셔너리에 각 스테이지가 나온 횟수를 넣은 후,
people에 전체 인원 수 (stages의 크기)를 담고 1라운드부터 각 라운드를 해결 못한 사람들을 people에서 뺀 뒤 실패율을 계산한다.
이때 people이 0일경우 failnum이 0인 경우를 넣어줘야한다.
이후 다중배열로 (실패율, 인덱스) 순서로 넣어준 뒤, 실패율은 내림차순으로, 인덱스는 오름차순으로 정렬을 한다.
다중배열의 경우 람다 식을 이용하여 쉽게 정렬할 수 있다.
ans2 = sorted(ans, key = lambda x : (-x[0], x[1]))
이때 튜플(x[0].x[1]) 에서 -가 붙으면 내림차순으로 정렬을 하겠다는 것이다.
sorted함수에 key를 람다 함수로 전달한다.
나 같은 경우는 다중배열 중 첫 원소는 내림차순, 뒤의 원소는 오름차순으로 나열을 해야했기에 다음과 같이 람다 식을 작성하였다.
3. 코드
a = dict()
def solution(N, stages):
for i in range(1,N+1):
a[i] = 0
for i in stages:
if i in a:
a[i] += 1
else:
a[i] = 1
people = len(stages)
ans = []
for i in range(1,N+1):
failnum = 0
element = []
if i in a:
if people == 0:
failnum = 0
else:
failnum = a[i]/people
people -= a[i]
element.append(failnum)
element.append(i)
ans.append(element)
ans2 = sorted(ans, key = lambda x : (-x[0], x[1]))
answer=[]
for i in ans2:
answer.append(i[1])
return answer
4. 그외
파이썬이 아직 익숙하지 않아서 좀 노가다하는 경향이 있지만 금방 나아지길 바란다! ㅠㅠ
조급해하지말자!
우리네 인생 화이팅..
'ALGORITHM > Kakao' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT 무지의 먹방 라이브 (0) | 2021.04.01 |
---|---|
2019 KAKAO BLIND RECRUITMENT 후보키 (실패코드) (0) | 2021.03.27 |
(Python) 2019 KAKAO BLIND RECRUITMENT오픈채팅방 (0) | 2021.03.24 |
미완성코드/(C++)2018 KAKAO BLIND RECRUITMENT[3차] 자동완성 (0) | 2021.03.23 |
(C++) 2018 KAKAO BLIND RECRUITMENT[1차] 추석 트래픽 (0) | 2021.03.23 |