이중 반복문 과 조건문으로 테스트케이스는 통과했지만, 풀면서 당연히 다시 풀어야 할것 같은 느낌,,
결과적으로 다시 풀었고, 코테에서 꽤나 자주 사용하게 될것 같은 느낌의 개념을 공부 했다.
def solution(players, callings):
answer = []
tmp = ''
for i in callings:
for j in range(len(players)):
if i == players[j]:
tmp = players[j-1]
players[j-1] = players[j]
players[j] = tmp
return players
dict = {}
playerDict = {player: i for i, player in enumerate(players)}
return playerDict
def solution(players, callings):
answer = []
idx_player = {i: player for i, player in enumerate(players)}
player_idx = {player : i for i, player in enumerate(players)}
# 뒤에서부터 생각을 하면 됨,
# 1. player in enumerate(players) 는 {0 : a , 1 : b, 2 : c, ...} 이렇게 갈텐데,
# 키 & 벨류 세트가 하나씩 i 와 player에 들어가는 것
# 2. 블라 블라 : 블라 블라 딕셔너리는 이렇게 만들어 지는데 for 뒤의 i, player in enumerate(players)를 가지고 i : player로 만들겠다 라는 뜻,
# 딕셔너리는 초기화 될떄 idx(key) : 값(values) 이렇게 초기화 되니깐, i 가 인덱스, player가 벨류이고 idx_player는 {인덱스(순서) : 벨류(선수)} 이렇게 초기화를 하는것이고
# player_idx 는 마지막에 초기화 시 선수 명을 키로 순서를 벨류로 초기화를 해서 {선수 : 순서} 이렇게 초기화를 한것
for i in callings:
cur_idx = player_idx[i]
# 딕셔너리[키] ==> player:idx 딕셔너리에 키값인 callings의 선수 키값을 넣어줘서
# 현재 calling 딕셔너리 선수의 idx 값을 넣어줌
pre_idx = cur_idx-1
cur_player = i
pre_player = idx_player[pre_idx]
player_idx[cur_player] = pre_idx
player_idx[pre_player] = cur_idx
idx_player[pre_idx] = cur_player
idx_player[cur_idx] = pre_player
return list(idx_player.values())