세용용용용 2023. 10. 5. 12:03

코딩테스트 연습 - 달리기 경주 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

나의 코드

def solution(players, callings):
    answer = []
    for i in callings:
        # 이름 불린 인덱스
        call_index = players.index(i)
        # 이름 불린 선수
        call_play = players[call_index]
        # 이름 불린 선수 앞에있는 선수
        change_play = players[call_index-1]
       
        # 교체해주기
        players[call_index-1] = call_play
        players[call_index] = change_play
    #print(players)
    answer = players
    return answer
solution(["mumu", "soe", "poe", "kai", "mine"],
         ["kai", "kai", "mine", "mine"])

 

수정 코드 

순위 딕셔너리를 만들주고 선수마다 순위를 바꿔주자

def solution(players, callings):
    # 순위 딕셔너리를 만들어준다
    players_dict = {}
    for i in range(len(players)):
        players_dict[players[i]] = i+1
    #print(players_dict)

    # 선수 이름을 돌며 순위를 바꿔준다
    for i in callings:
        call_rank = players_dict[i]
        players_dict[i] -= 1
        players_dict[players[call_rank-2]] += 1
        players[call_rank-2], players[call_rank-1] = players[call_rank-1], players[call_rank-2]
   
    #print(players)
    return players
solution(["mumu", "soe", "poe", "kai", "mine"],
         ["kai", "kai", "mine", "mine"])