문제 링크
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
'개발 > algorithm' 카테고리의 다른 글
[코드트리] 싸움땅 - Python (1) | 2023.10.11 |
---|---|
[코드트리] 코드트리 빵 - Python (1) | 2023.10.11 |
[Python] 반올림 처리하기 - 오사오입 (0) | 2023.03.05 |
[백준 12919번] A와 B 2 - python (0) | 2023.02.01 |
[백준 1806번] 부분합 - python (0) | 2023.02.01 |