def solution(N, stages):
# 스테이지 당 플레이어의 수
no_of_player_on_stage=[]
for i in range(N):
if i+1 in stages:
stage_player=stages.count(i+1)
else:
stage_player=0
no_of_player_on_stage.append(stage_player)
# 실패율
failure=[]
for no,no_of_player in enumerate(no_of_player_on_stage):
if sum(no_of_player_on_stage[no:]) !=0: # 분모가 0일 경우
if N+1 in stages:
fin_players=stages.count(N+1) # 게임을 클리어한 플레이어의 수
failure.append(no_of_player/(sum(no_of_player_on_stage[no:])+fin_players))
else:
failure.append(no_of_player/sum(no_of_player_on_stage[no:]))
else:
failure.append(0)
stage_no = [x+1 for x in range(N)]
failure_dict=dict(zip(stage_no,failure))
failure_sorted=sorted(failure_dict, key=lambda x: failure_dict[x], reverse=True)
return failure_sorted
많이 기넹..ㅋㅅㅋ
테스트 22 〉 통과 (2542.59ms, 18MB)
전체 플레이어의 수-스테이지 번호보다 작은 플레이어의 수의 합
으로 할까 스테이지 번호보다 큰 플레이어 수의 합
으로 할까 하다가 후자가 더 간단할 것 같았는데 결국 클리어한 사용자를 생각을 못해서 첨에 통과를 못했다. 클리어한 사용자가 몇명인지도 모르는데 왜 첨에 1을 더했는지ㅎㅅㅎo_of_player_on_stage
를 제대로 구했으면 됐잖아??싶어서 보니까 맨 마지막에 한줄만 추가해주면 됐다.. ㄹ무튼 수정해봄def solution(N, stages):
# 스테이지당 플레이어의 수
no_of_player_on_stage=[]
for i in range(N):
if i+1 in stages:
stage_player=stages.count(i+1)
elif i+1 not in stages:
stage_player=0
no_of_player_on_stage.append(stage_player)
if N+1 in stages:
no_of_player_on_stage.append(stages.count(N+1))
# 실패율
failure=[]
for no,no_of_player in enumerate(no_of_player_on_stage):
if sum(no_of_player_on_stage[no:]) !=0:
failure.append(no_of_player/sum(no_of_player_on_stage[no:]))
else:
failure.append(0)
# 실패율로 스테이지 넘버 정렬
stage_no = [x+1 for x in range(N)]
failure_dict=dict(zip(stage_no,failure))
failure_sorted=sorted(failure_dict, key=lambda x: failure_dict[x], reverse=True)
return failure_sorted
테스트 22 〉 통과 (1579.50ms, 18.1MB)
그래도 길지만 시간도 좀 덜 들고? 리팩토링으로는 만족 근데 웃긴 건 난 이게 젤 맘에 드는데 두번째로 고친 게 더 빠르다 뭐 진짜 얼마 차이 안나서 티도 안나긴 하지만? append보단 그냥 덧셈이 낫다 이건가 무튼 이제 다른 사람들이 얼마나 똑똑한지 구경하러 가야징..
그래도 이제 range(len()) 덜 써서 좀 직관적인 것 같다 퓨..
def solution(x):
total=0
y=x
while y>10:
total+=y%10
y=y//10
total+=y
if x%total==0:
return True
else:
return False
else는 없어도 된다
근데 사실 return x%total==0
이렇게 쓰면 된다.. 3줄이나 짧아짐ㅋㅋ
def solution(x):
x=str(x)
total=0
for i in x:
total+=int(i)
return int(x)%total==0
→ 내가 스트링으로 풀었을 때 💥
def Harshad(n):
return n % sum([int(c) for c in str(n)]) == 0
→ 남이 스트링으로 풀었을 때
ㅋㅋㅋㅋㅋㅋㅋㅋ
리스트 축약식+내장함수 조합 나도 언젠간 이렇게 풀 수 있겠지???