문제는 이렇게
코드를 입
import java.util.Arrays;
public class RunHores {
public static String[] swapElements(String[] array, int index1, int index2) {
String temp = array[index1];
array[index1]=array[index2];
array[index2]=temp;
return array;
}
public static void main(String[] args) {
String[] players = {"mumu", "soe", "poe", "kai", "mine"};
String[] callings = {"kai", "kai", "mine", "mine"};
String[] result = new String[0];
for(String call : callings){
int callIndex = Arrays.asList(players).indexOf(call);
result = swapElements(players, callIndex-1, callIndex);
}
System.out.println(Arrays.toString(result));
//String[] result ={"mumu", "kai", "mine", "soe", "poe"};
}
}력하세요
이런식으로 풀어봤는데 채점중에 시간초과라고 뜬다 ㅠ
다시 풀어봐야겠다
인터넷에 풀이를 보니 HashMap을 사용하라고 한다
public static void main(String[] args) {
String[] players = {"mumu", "soe", "poe", "kai", "mine"};
String[] callings = {"kai", "kai", "mine", "mine"};
String[] result = new String[0];
HashMap<String,Integer> playerMap = new HashMap<>();
HashMap<Integer,String> rankedMap = new HashMap<>();
for(int i=0; i<players.length; i++){
playerMap.put(players[i],i);
rankedMap.put(i,players[i]);
}
for(String call : callings){
int callIndex = playerMap.get(call);
int temp = callIndex-1;
playerMap.put(call, temp);
playerMap.put(rankedMap.get(temp),callIndex);
rankedMap.put(callIndex,rankedMap.get(temp));
rankedMap.put(temp,call);
}
return rankedMap.values().toArray(new String[rankedMap.size()]);
}
HashMap을 사용해서 대용량 데이터가 들어와도 시간복잡도를 O(n)으로 잡을 수 있는 구조로 변경시켰다