[프로그래머스] Python - Lv.1 - 달리기 경주

·2023년 12월 6일
0

코테 풀기

목록 보기
26/26
post-thumbnail

달리기 경주

문제 / 제한사항

입출력 예

문제 바로가기

프로그래머스 - Lv1. 달리기 경주


💡풀이방법

  • 문제를 쉽게 풀어보면, callings에서 불린 선수 순서대로 해당 선수의 앞 선수와 순서를 바꾸면서 players의 인덱스 값을 갱신
  • 접근 방법
    1. players 배열을 딕셔너리(player_list)를 통해 초기 위치 정보를 저장
    1. 반복문을 통해 callings의 배열에 들어가 있는 선수를 차례대로 호출
    2. 현재 불린 선수의 인덱스(current_index) 확인
    3. 현재 불린 선수와 그 앞의 선수 인덱스 swap
    4. 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]
        # calling 선수와 그 앞의 선수의 순서 변경
        players[current_index], players[current_index - 1] = players[current_index - 1], players[current_index]
        # 변경된 순서로 list에 index값 갱신
        player_list[calling_player] = current_index - 1
        player_list[players[current_index]] = current_index

    return players

0개의 댓글