본문 바로가기
프로그래머스/1단계

(Python/LV1) 달리기 경주

by windy7271 2023. 4. 8.
728x90
반응형

문제출처:https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

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

programmers.co.kr

def solution(players, callings):
    players_dict = {player:rank for rank, player in enumerate(players, start = 1)}

    for i in callings:
        change_rank = players_dict[i] - 1 # kai 이면 3을 저장 .
        reverse_dict = dict(map(reversed,players_dict.items()))
        change_player = reverse_dict[change_rank]
        players_dict[change_player] += 1
        players_dict[i] = change_rank
    sorted_players = sorted(players_dict, key=players_dict.get)
    result = [player for player in sorted_players]
    return result
    
56.3점 맞음 callings 가 백만번이라 그런거 같음

 



def solution(players, callings):
    # players_dict = {player:rank for rank, player in enumerate(players, start = 1)}

    rank_dic = {}
    players_dict = {}

    for idx, player in enumerate(players):
        rank_dic[idx + 1] = player
        players_dict[player] = idx + 1

    for calling in callings:
        now_rank = players_dict[calling]
        prev_rank = now_rank - 1
        prev_player = rank_dic[prev_rank]

        rank_dic[prev_rank], rank_dic[now_rank] = rank_dic[now_rank], rank_dic[prev_rank]
        players_dict[prev_player], players_dict[calling] = players_dict[calling], players_dict[prev_player]

    print(list(rank_dic.values()))

해결

반응형

댓글