반응형
풀이
최소한의 비용으로 players 의 위치를 탐색해 순위를 바꿔야 하는 문제이다.
단순히 callings 에 있는 이름들을 players 리스트를 순회하며 찾는다면 50,000 * 1,000,000 만큼의 비용이 발생할 것이다.
따라서 callings 에 있는 이름을 playres 에서 O(1) 만에 탐색할 수 있는 딕셔너리와 같은 HashMap 을 사용해야 한다.
def solution(players, callings):
rank = dict()
for i in range(len(players)):
rank[players[i]] = i
for name in callings:
idx = rank[name]
# 인덱스 변경
rank[players[idx-1]], rank[name] = rank[name], rank[players[idx-1]]
# 실제 위치 변경
players[idx], players[idx-1], = players[idx-1], players[idx]
return players
반응형
'알고리즘 연습 > 집합과 맵' 카테고리의 다른 글
[🥈2 / 백준 19583 / 파이썬] 싸이버개강총회 (0) | 2023.11.16 |
---|---|
[🥈4 / 백준 26069 / 파이썬] 붙임성 좋은 총총이 (0) | 2023.09.10 |
[🥈3 / 백준 20920 / 파이썬] 영단어 암기는 괴로워 (0) | 2023.08.12 |
[🥈4 / 백준 25192 / 파이썬] 인사성 밝은 곰곰이 (0) | 2023.07.24 |
[🥈3 / 백준 11478 / 파이썬] 서로 다른 부분 문자열의 개수 (0) | 2022.05.11 |