맵을 저장하는 과정까지는 맞았는데, 순서를 바꾸기 위해 탐색을 하는 과정을 너무 비효율적이게 작성했었다. 인덱스 값에 집중한다.
import java.util.Map;
import java.util.HashMap;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = {};
int N = players.length, M = callings.length, i, currentIndex;
String calledPlayer, previousPlayer;
Map <String, Integer> name = new HashMap<>();
answer = new String[N];
//맵에 선수 정보 저장
for(i = 0; i < N; i++){
name.put(players[i], i);
}
for(i = 0; i < M; i++){
calledPlayer = callings[i];
currentIndex = name.get(calledPlayer);
//스왑 과정
previousPlayer = players[currentIndex - 1];
players[currentIndex - 1] = calledPlayer;
players[currentIndex ] = previousPlayer;
name.put(calledPlayer, currentIndex - 1);
name.put(previousPlayer, currentIndex);
for(String player : players){
System.out.print(player + " ");
}
System.out.println();
}
for(i = 0; i < N; i++){
answer[i] = players[i];
}
return answer;
}
}