반응형
https://programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
풀이
lst를 [실패율,인덱스]에 맞게 쓰려고 정의했다
두가지가 오래 걸렸다
첫번째, 처음에는 lst를 내림차순으로 배열해놨는데 같은것만 오름차순으로 어띃게 만들지 고민하다가
lambda를 참고했다.
두번째, 테스트 케이스 1,6,23,24..... 몇개가 계속 런타임 에러걸리는데
뭔가 하다가
N=5
stages=[2,1,2,4,2,4,3,3]
이와 같이 5에 경우 사람이 0명으로 0으로 나누면 에러뜨는 상황을 발견해서 수정했다..
def solution(N, stages):
answer = []
people=len(stages)
lst=[[0,i+1] for i in range(N)]
if N==1:
answer.append(1)
else:
for i in range(1,N+1):
if people==0:
break
cnt=stages.count(i)
if lst[i-1][0]==0:
lst[i-1][0]=(cnt)/people
if cnt>=0:
people-=(cnt)
lst.sort(key = lambda x: (-x[0], x[1]))
for i in range(N):
answer.append(lst[i][1])
return answer
알아가야할거
lambda 함수를 사용하는 습관을 들여야겠다.!!
위에 예제처럼 람다로 정렬하는 방법
x로 잡고 -x[0]를 붙이면 내림차순으로 먼저 정렬되고
그 다음 우선순위인 x[1] 기준으로 오름차순 정렬된다....
반응형
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[JAVA SWEA 1210 ] Ladder1 (0) | 2021.08.04 |
---|---|
[Python/파이썬 프로그래머스] 다트게임(카카오) (0) | 2021.06.30 |
[파이썬/Python 프로그래머스] 체육복 (0) | 2021.06.28 |
[Python/파이썬 백준 1339] 단어 수학 (0) | 2021.06.02 |
[Python/파이썬 1107 백준] 리모컨 (0) | 2021.05.20 |