https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(players, callings):
rank = {player: i for i, player in enumerate(players)} #선수: 등수
for people in callings:
player_index = rank[people] #불린 선수 현재 등수
rank[people] -= 1 #앞으로 한 칸 가기
rank[players[player_index - 1]] += 1 #앞에 있던 선수 뒤로 가기
players[player_index], players[player_index - 1] = players[player_index - 1], players[player_index]
return players
원래 코드는
def solution(players, callings):
for i in callings:
for j in len(players):
if i == players[j]:
players[j-1], players[j] = players[j], players[j-1]
return players
이것이었다.
하지만 이렇게 코드를 짤 경우 시간초과가 발생한다....
시간초과를 막기 위해서는 딕셔너리를 만들어야 한다는 것을 알게 되었다.
'[개발]programmers > Python3' 카테고리의 다른 글
Lv.0_문자열 잘라서 정렬하기 (0) | 2023.06.14 |
---|---|
Lv.1_추억 점수 (0) | 2023.06.12 |
Lv.1_콜라 문제 (0) | 2023.02.22 |
Lv.1_2016년 (0) | 2023.02.22 |
Lv.1_크기가 작은 부분문자열 (0) | 2023.02.22 |