티스토리 뷰


#오답코드

index 라이브러리를 이용해서 쉽게 풀이하려 했지만 시간초과가 발생했다.

def solution(players, callings):
    for i in callings:
        index = players.index(i)
        players[index], players[index-1] = players[index-1], players[index]
    return players


#정답코드

# 1. 순위를 key값을 담을 map과 이름을 key값을 담을 map을 만든다.
# 2. for문을 통해 calling의 정보를 player_dic에 주입하여 순위를 뽑아낸다.
#    - 뽑아낸 순위를 rank_dic에 주입하여 이름을 뽑아낸다.
# 3. player과 rank 둘다 전 후 위치를 변경한다.

def solution(players, callings):
    rank_dic = {}
    player_dic = {}

    for num,name in enumerate(players):
        rank_dic[num] = name
        player_dic[name] = num

    for name in callings:
        cur_rank = player_dic[name]
        pre_rank = player_dic[name] - 1
        pre_player = rank_dic[pre_rank]

        rank_dic[cur_rank], rank_dic[pre_rank] = rank_dic[pre_rank], rank_dic[cur_rank]
        player_dic[name], player_dic[pre_player] = player_dic[pre_player], player_dic[name]

    return list(rank_dic.values())

 


딕셔너리를 활용하는 방법을 배울 수 있었다.


 

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

 

프로그래머스

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

programmers.co.kr

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함