코딩테스트 파이썬/파이썬 프로그래머스 1단계
달리기 경주
세용용용용
2023. 10. 5. 12:03


코딩테스트 연습 - 달리기 경주 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
def solution(players, callings):
answer = []
for i in callings:
# 이름 불린 인덱스
call_index = players.index(i)
# 이름 불린 선수
call_play = players[call_index]
# 이름 불린 선수 앞에있는 선수
change_play = players[call_index-1]
# 교체해주기
players[call_index-1] = call_play
players[call_index] = change_play
#print(players)
answer = players
return answer
solution(["mumu", "soe", "poe", "kai", "mine"],
["kai", "kai", "mine", "mine"])

수정 코드
순위 딕셔너리를 만들주고 선수마다 순위를 바꿔주자
def solution(players, callings):
# 순위 딕셔너리를 만들어준다
players_dict = {}
for i in range(len(players)):
players_dict[players[i]] = i+1
#print(players_dict)
# 선수 이름을 돌며 순위를 바꿔준다
for i in callings:
call_rank = players_dict[i]
players_dict[i] -= 1
players_dict[players[call_rank-2]] += 1
players[call_rank-2], players[call_rank-1] = players[call_rank-1], players[call_rank-2]
#print(players)
return players
solution(["mumu", "soe", "poe", "kai", "mine"],
["kai", "kai", "mine", "mine"])