https://school.programmers.co.kr/learn/courses/30/lessons/178871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
단순하게 players 배열을 순회하는 방식으로 구현을 한다면, 당연하게 시간초과가 나는 문제였다.
파이썬의 dictionary 자료구조를 이용해서 인덱스를 value로, 이름을 key로 갖는 dict로 바꿔서 인덱스를 더 빠르게 알아낼 수 있도록 구현해야 한다.
enumerate 메소드를 사용해서 리스트를 dictionary로 변환하는 문법에 익숙하지 않아 구글링을 했는데, 앞으로 많이 쓰일 것 같으니 외워두는 게 좋을 것 같다.
def solution(players, callings):
index = {value: index for index, value in enumerate(players)}
for i in range(len(callings)):
idx = index[callings[i]]
players[idx], players[idx - 1] = players[idx - 1], players[idx]
index[callings[i]] -= 1
index[players[idx]] += 1
return players
'알고리즘💻 > 기타' 카테고리의 다른 글
프로그래머스 Lv.1 - 추억 점수 (0) | 2023.09.27 |
---|---|
BOJ 14891번: 톱니바퀴 (0) | 2021.09.13 |
BOJ 10610번: 30 (0) | 2021.07.19 |
BOJ 2155번: 삼각형의 최단 경로 (0) | 2021.05.26 |