
https://school.programmers.co.kr/learn/courses/30/lessons/178871
players: 현재 등수 순서대로 선수 이름 배열이 주어지고,
callings: 심판이 호명한 선수 이름 배열. 한 번 호명되면 그 선수는 바로 앞 선수와 자리 교체된다.
모든 호명을 처리한 뒤의 최종 players 순서를 반환하는 문제이다.
from collections import defaultdict
def solution(players, callings):
RankAndName = defaultdict()
for i,name in enumerate(players):
RankAndName[name] = i
for who in callings:
idx = RankAndName[who]
RankAndName[who] -= 1
RankAndName[players[idx-1]] += 1
players[idx-1], players[idx] = players[idx], players[idx-1] # 위치 변경
return players
{ 이름 : 등수 , 이름 : 등수 .. ] 형식으로 딕셔너리를 만들어서
호명되는 인원의 등수 -1, 호명된 인원의 앞 등수 + 1 를 해주고,
자리를 바꿔주면 되는 문제였다.