코딩 테스트/Python

달리기 경주

susinlee 2024. 12. 30. 17:41

[문제]

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이]

1. 효율성을 고려해야 하는 문제이므로 리스트에 인덱스로 접근하여 값을 변경해주어야 한다.

2. 딕셔너리를 통해 인덱스를 저장하고, 저장된 값을 수정해주면서 리스트에 인덱스로 접근해 순위를 바꿔준다.

 

from collections import defaultdict

def solution(players, callings):
    rank = defaultdict(int)
    for i, player in enumerate(players):
        rank[player] += i

    for call in callings:
        idx = rank[call]
        rank[call] -= 1
        rank[players[idx-1]] += 1
        players[idx], players[idx - 1] = players[idx - 1], players[idx]

    return players

 

 

'코딩 테스트 > Python' 카테고리의 다른 글

신고 결과 받기  (0) 2025.01.02
공원 산책  (0) 2024.12.31
[PCCP 기출문제] 2번 / 석유 시추  (2) 2024.12.28
개인정보 수집 유효기간  (0) 2024.12.24
바탕화면  (0) 2024.12.23