본문 바로가기
컴퓨터공학 & 정보통신/알고리즘 문제 풀이

[프로그래머스] 달리기 경주

by TaeGyeong Lee 2023. 4. 15.

접근

  • 처음에 O(N^2)로 솔루션을 작성했지만 당연히 TLE
  • 해시 자료구조를 사용하여 문제를 O(N)으로 풀어야 한다.

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

솔루션

def solution(players, callings):    
    
    Hash = {}
    for index, value in enumerate(players):
        Hash[value] = index
    
    for index, value in enumerate(callings):
        rank = Hash[value]
        
        # swap in players
        players[rank-1], players[rank] = players[rank], players[rank-1]
        
        # swap rank in Hash
        Hash[value] = rank-1
        Hash[players[rank]] = rank
        
    return players