코딩/프로그래머스 레벨1

프로그래머스 lv1 달리기 경주 (40%) 파이썬 풀이

큰고양2 2023. 9. 9. 12:44

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

 

프로그래머스

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

programmers.co.kr

def solution(players, callings):
    
    count = list(range(len(players))) #현재 플레이어의 랭킹
    rank_dict = dict(zip(players,count))#플레이어를 키 값으로 하는 랭킹 딕셔너리
    
    for calls in callings :
        
        #호명된 사람의 랭킹 불러오기, players 리스트에서 앞사람을 조회하기 위해
        call_rank = rank_dict[calls]
        
        #랭킹 변경
        
        rank_dict[calls] -= 1   #호명된 사람의 랭킹 + 1
        rank_dict[players[call_rank-1]] += 1 #앞사람의 랭킹 -1
        
        #rank_dict 결과를 players 순서에 적용하기
        call_rank = rank_dict[calls]  #현재 랭킹 다시 불러오기
        players[call_rank:call_rank+2] = list(reversed(players[call_rank:call_rank+2])) #리스트 치환
    return players