새소식

알고리즘/프로그래머스

[프로그래머스] [내일은 코딩테스트 with 파이썬 파트1. 문자열 다루기] 문제2) 달리기 경주(Python)

  • -
728x90
반응형

 

달리기 경주

 

def solution(players, callings):
    p = {player : i for i, player in enumerate(players)} # 선수:등수
    for i in callings:
        idx = p[i] # 호명된 선수의 현재 등수
        p[i] -= 1 # 하나 앞 등수로 바꿔줌 -1
        p[players[idx-1]] += 1 # 앞에 위치했던 선수의 등수 +1
        players[idx-1], players[idx] = players[idx], players[idx-1] # 위치 변경
        
        answer = players
        
    return answer

 

 

def solution(players, callings):
    for i in callings:
        idx = players.index(i)
        players[idx], players[idx-1] = players[idx-1], players[idx]
        
    answer = players
    return answer

이렇게 푸니까 일부 테스트코드에서 시간초과 에러가 발생했다

딕셔너리로 선수:등수를 만들어주고

호명된 선수와 이전 선수 위치를 바꿔준다

 

index를 사용하면 시간초과가 날 수 있다.

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.