[Python/파이썬] 프로그래머스 Lv1 - 달리기 경주

반응형

문제 설명

제한사항

 

입출력 예

 


Solution.py

이 문제를 풀기 위해 2개의 딕셔너리를 활용했는데

하나는 달리기 순위를 key로 갖고 선수 이름을 value로 갖는 rank_Dic

다른 하나는 선수 이름을 key로 갖고 달리기 순위를 value로 갖는 player_Dic 으로 만들었습니다.

두 개의 딕셔너리를 활용하는 이유는 아래의 코드를 보면 이해되겠지만, 순위가 변경될 때 서로의 value값을 참조하기 때문입니다.

서로의 value값을 참조하며 callings 배열에 있는 선수들 정보를 가지고 이름을 불린 선수와 그 선수의 앞에 있는 선수를 서로 변경하여 마지막으로 result 에 맞도록 rank_Dic의 value들을 반환합니다.

 

정답 코드
def solution(players, callings):
    rank_Dic = {}
    player_Dic = {}

    for i, p in enumerate(players):
        rank_Dic[i + 1] = p
        player_Dic[p] = i + 1
    
    for cur_player in callings:
        cur_rank = player_Dic[cur_player]
        front_rank = cur_rank - 1
        front_player = rank_Dic[front_rank]

        rank_Dic[front_rank], rank_Dic[cur_rank] = rank_Dic[cur_rank], rank_Dic[front_rank]
        player_Dic[front_player], player_Dic[cur_player] = player_Dic[cur_player], player_Dic[front_player]

    return list(rank_Dic.values())