•
첫 시도 → 시간 초과
def solution(players, callings):
for i in callings:
index_i = players.index(i)
players[index_i] = players[index_i-1]
players[index_i-1] = i
return players
Python
복사
•
두번째 풀이 → 딕셔너리로 시간 줄이기
def solution(players, callings):
answer = []
dic_players = {}
dic_rank = {}
for idx, i in enumerate(players):
dic_players[i] = idx # dic_players 딕셔너리에 현 순서의 선수들의 이름과 순서를 딕셔너리로 할당
dic_rank[idx] = i # dic_rank 딕셔너리에는 현 순서와 선수들의 이름을 할당
for i in callings:
cur_idx = dic_players[i] # 바뀌기 전 선수의 순위
dic_players[i] = cur_idx - 1 # 바뀌고 난 순위로 변경
dic_players[dic_rank[cur_idx - 1]] = cur_idx # 이전 순위에 있던 player 는 그 다음 순위를 할당
dic_rank[cur_idx] = dic_rank[cur_idx - 1]
dic_rank[cur_idx - 1] = i
answer = list(dic_rank.values())
return answer
Python
복사