달리기 경주
문제 / 제한사항
입출력 예
문제 바로가기
프로그래머스 - Lv1. 달리기 경주
💡풀이방법
- 문제를 쉽게 풀어보면,
callings
에서 불린 선수 순서대로 해당 선수의 앞 선수와 순서를 바꾸면서 players
의 인덱스 값을 갱신
- 접근 방법
1. players
배열을 딕셔너리(player_list
)를 통해 초기 위치 정보를 저장
- 반복문을 통해
callings
의 배열에 들어가 있는 선수를 차례대로 호출
- 현재 불린 선수의 인덱스(
current_index
) 확인
- 현재 불린 선수와 그 앞의 선수 인덱스 swap
player_list
의 현재 불린 선수의 인덱스(current_index
) -1
- 현재 불린 선수의 앞에 위치했던 선수의 인덱스는
current_index
로 갱신
👀전체코드
def solution(players, callings):
player_list = {player: i for i, player in enumerate(players)}
for i in range(len(callings)):
calling_player = callings[i]
current_index = player_list[calling_player]
players[current_index], players[current_index - 1] = players[current_index - 1], players[current_index]
player_list[calling_player] = current_index - 1
player_list[players[current_index]] = current_index
return players