최종적으로 순위가 변경된 배열을 리턴하면 되는 문제이다.
처음에는 for 문으로 다 돌면 되지않나? 생각했는데 만약 for 문으로 탐색을 진행 할 경우
50,000 * 1,000,000 = 50,000,000,000 이라는 어마무시한 시간복잡도가 나오므로 HashMap 으로 진행했다.
일단 Map 으로 진행을 하면 Key 값에 선수 이름을 넣고, value 값에 등수를 넣어주면 된다.
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < players.length; i++) {
map.put(players[i], i + 1);
}
for (int i = 0; i < callings.length; i++) {
int rank = map.get(callings[i]);
String name = players[rank -2]; // 전 선수 이름
map.put(name, rank);
map.put(callings[i], rank -1);
players[rank -1] = name;
players[rank -2] = callings[i];
}
return players;
}
}
처음으로 10점 받아봤다!! 짱 신기...