본문 바로가기

코딩테스트

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

[Lv.1] 정답율 39% 

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

 

프로그래머스

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

programmers.co.kr

 

[풀이]

- 리스트를 이용하면 시간 초과로 탈락. 해쉬 테이블(딕셔너리)를 만들어서 풀어야한다.

 

[정답]

def solution(players, callings):
  name_dict = {name:rank for rank, name in enumerate(players)}
  rank_dict = {rank:name for rank, name in enumerate(players)}

  for calling in callings :
    rank = name_dict[calling]
    name_dict[calling], name_dict[rank_dict[rank-1]] = rank-1, rank
    rank_dict[rank],rank_dict[rank-1] = rank_dict[rank-1], rank_dict[rank]

  return list(rank_dict.values())