players
선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 | ["mumu", "soe", "poe", "kai", "mine"] | 5 ≤ players의 길이 ≤ 50,000, players[i]는 i번째 선수의 이름
callings
해설진이 부른 이름을 담은 문자열 배열 | ["kai", "kai", "mine", "mine"] | 2 ≤ callings의 길이 ≤ 1,000,000, callings는 players의 원소들로만 이루어짐
경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return
Map에 순서와 함께 초기화를 한 뒤, callings에 불린 이름과 앞서 있던 이름의 순서를 바꿈
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
Map<String, Integer> map = new HashMap<>();
int order = 0;
for(String player : players){
map.put(player, order++);
}
for(String call : callings){
int idx = map.get(call);
String pre = players[idx-1];
players[idx-1] = call;
map.put(call, idx-1);
players[idx] = pre;
map.put(pre, idx);
}
return players;
}
}