본문 바로가기

개발/algorithm

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

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 

딕셔너리 두개 사용해서 풀이

def solution(players, callings):
    answer = []
    n = len(players)
    m = len(callings)
     
    # key : 순위, value : 선수 이름
    dict = {}
    # key : 선수 이름, value : 순위
    ranks = {}
    # 값 초기화 
    for i in range(1, n+1):
        dict[i] = players[i-1]
        ranks[players[i-1]] = i
         
    for i in range(m):
        rank = ranks[callings[i]]
        # 불린 선수 앞에 있는 사람
        tmp = dict[rank-1]
        tmp_rank = ranks[tmp]
         
        # 순위 바꿔주기
        dict[rank-1] = callings[i]
        dict[rank] = tmp
         
        ranks[tmp] = rank
        ranks[callings[i]] = rank-1
         
    for i in range(1,n+1):
        answer.append(dict[i])
         
    return answer