프로그래머스 Level 1 | 달리기 경주 | Python

kimminjunnn·2025년 10월 24일

알고리즘

목록 보기
213/311

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 를 해주고,
자리를 바꿔주면 되는 문제였다.

profile
Frontend Engineers

0개의 댓글