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()))
해결
반응형
댓글