for (int i = 0; i < callings.length; i++) {
for (int j = 1; j < player.length; j++) {
if(callings[i].equals(player[j])){
String david = player[j];
player[j] = player [j-1];
player[j-1] = david;
}
}
}
이렇게 2가지 방법을 생각했는데.. 시간복잡도에 걸린거같아요..
player가 최대 50000명까지 있을 수 있습니다.
50000명이 참가한 경기에서 꼴등이 앞사람을 추월한다고 하면 6번째 줄에 있는 반복문에 의해서 50000번 탐색 끝에 players[i].equals(calling)에 해당 되는 선수를 찾게 됩니다.
calling의 길이가 최대 1,000,000이기 때문에 이런 worst case가 계속 반복될 경우 최대 50,000 * 1,000,000번을 반복하게 됩니다.
호명된 사람의 index를 한 번에 찾을 수 있으면 좋을 것 같습니다.
map이라는 자료구조를 활용해서 한 번에 그 사람의 index를 찾을 수 있으면 시간 단축에 도움이 될 거에요!
key = name
value = index