이중 for문을 이용해서 현재 스테이지별 유저의 스테이지를 탐색해줬다.
정렬은 값이 0~1이니 -1로 바꿔가면서 최대값을 찾았다.
처음엔 스테이지에 도달했지만 클리어하지 못한 유저들과 스테이지에 도달한 유저들 모두 이중 for문 안에서
구하니 시간초과가 3개 나왔다... 그래서 len(stages)를 이용, 실패한 유저씩 빼주면 되더라.
def solution(N, stages):
a= []
b=[]
k= len(stages)
for i in range(N):
c=0 #실패한 유저수 스테이지마다 초기화
for j in range(len(stages)): #계속 변하는 k로 두지않게 주의
if stages[j]==i+1: #스테이지에 도달했지만 클리어하지 못한 유저들
c+=1
if c!=0:
a.append(c/k) #도달한 유저수로 나눠줌
else: #실패한 유저가 없을때
a.append(0)
k-=c #스테이지에서 떨어진 유저들을 제외시킴
for i in range(len(a)):
b.append(a.index(max(a))+1)
a[a.index(max(a))]=-1 #내림차순으로 정렬
return b
'프로그래머스 풀이' 카테고리의 다른 글
[프로그래머스] Lv1. 예산 (파이썬) (0) | 2022.02.12 |
---|---|
[프로그래머스] Lv1. 약수의 개수와 덧셈 (파이썬) (0) | 2022.02.12 |
[프로그래머스] Lv1. 3진법 뒤집기 (0) | 2022.02.11 |
프로그래머스 폰켄몬(파이썬) (0) | 2022.02.11 |
프로그래머스 모의고사(파이썬) (0) | 2022.02.11 |