달리기 경주 문제 바로가기
나의 풀이#
def solution(players, callings):
answer = []
names = {}
ranks = {}
for i,player in enumerate(players):
ranks[i+1] = player
names[player] = i+1
for call in callings:
idx = names[call]
p1 = ranks[idx-1]
ranks[idx-1],ranks[idx] = call,p1
names[call],names[p1] = idx-1,idx
answer=list(ranks.values())
return answer
CODE REVIEW#
- 처음에는 수열로
array[i],array[i-1]=array[i-1],array[i]
처럼 구현했는데, 시간초과
문제가 발생하여 실패했다.
- 탐색 과정에서 소요되는 시간을 줄이기 위해 딕셔너리를 이용하여 구현했다.
- (순위,이름) (이름,순위) 순서쌍의 딕셔너리 두 개를 생성하고 call마다 각각의 딕셔너리를 업데이트 해주는 방식이다.