코딩테스트 연습/프로그래머스

[Python - 프로그래머스] 달리기 경주

슈퍼짱짱 2023. 6. 16. 13:12
반응형

파이썬으로 코딩테스트 연습 :: Programmers - 달리기 경주

 

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

1
2
3
4
5
6
7
8
9
10
11
def solution(players, callings):
    p1 = {i+1 : string for i,string in enumerate(players)}
    p2 = {string : i+1 for i,string in enumerate(players)}
    
    for i in callings :
        order = p2[i]
        p1[order], p1[order-1= p1[order-1], i
        p2[i], p2[p1[order]] = order-1, order
    
    return list(p1.values())
 
cs

 

처음에는 그냥 for문 돌리면서 list 자체에서 pop(), remove() 하는 식으로 코드를 짰으나

그럼 7~13번에서 시간초과로 실패한다.

 

이 문제는 불린 사람이 원래 몇위였는지도 알아야하고, 이전 순위 사람과 순위를 바꿔주어야 하기 때문에 dict을 두 개 쓰는게 포인트다.

 

 

반응형