본문 바로가기
Coding Test/Python

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

by giem 2023. 4. 7.
반응형

 


문제


구현

이 문제는 효율성 테스트는 없지만 그냥 배열로 구현하면 시간 초과가 뜬다.

그래서 dict를 사용해서 구현해야 한다.

 

dict에 이름이 키, index가 value 인 구조로 players 리스트를 가져온다.

 

그리고 callings 리스트를 돌면서 값을 swap 해주면 된다.

 

dict로 바꿔줘야 된다는 것만 주의하면 레벨 1이라서 쉽게 구현할 수 있다.


코드
def solution(players, callings):
    pdic={}
    for i in range(len(players)):
        pdic[players[i]]=i

    for call in callings:
        idx = pdic[call]
        temp = players[idx-1]
        players[idx-1], players[idx] = players[idx], players[idx-1]
        pdic[call], pdic[temp] = idx-1, idx
        
    return players

다른 풀이

다른 풀이까지는 아니지만 dict를 조금 더 파이써닉하게 생성하는 코드를 써봤다.

pdict = {key: i for i, key in enumerate(players)}

key를 key로, i(index)를 value로 써주었다.

 

반응형

댓글