[개발]programmers/Python3

Lv.1_ 달리기 경주

dowon 2023. 6. 12. 22:25

 

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