개발/algorithm
[프로그래머스][level1] 달리기 경주 - python
zzi_on2
2023. 8. 2. 15:31
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/178871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
딕셔너리 두개 사용해서 풀이
def solution(players, callings):
answer = []
n = len(players)
m = len(callings)
# key : 순위, value : 선수 이름
dict = {}
# key : 선수 이름, value : 순위
ranks = {}
# 값 초기화
for i in range(1, n+1):
dict[i] = players[i-1]
ranks[players[i-1]] = i
for i in range(m):
rank = ranks[callings[i]]
# 불린 선수 앞에 있는 사람
tmp = dict[rank-1]
tmp_rank = ranks[tmp]
# 순위 바꿔주기
dict[rank-1] = callings[i]
dict[rank] = tmp
ranks[tmp] = rank
ranks[callings[i]] = rank-1
for i in range(1,n+1):
answer.append(dict[i])
return answer