✅ 난이도 : LEVEL 1
✅ 문제
✅ 풀이 방법
처음에 배열을 복사하는 방법에 대해서 헷갈렸다
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = players;
for(int i=0; i<players.length; i++){
answer[i] = players[i];
}
for(int i=0; i<callings.length; i++){
for(int j=0; j<answer.length; j++){
if(answer[j].equals(callings[i])){
answer[j] = answer[j-1];
answer[j-1] = callings[i];
break;
}
}
}
return answer;
}
}
import java.util.HashMap;
import java.util.Map;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = players; // 배열복사로 입력받은 선수명단을 복사
Map<String,Integer> mapName = new HashMap<>();
// key -> String, value -> int 로 map 생성
for(int k=0; k<answer.length; k++) {
mapName.put(answer[k],k); // 명단 이름을 key로, 그에 해당하는 index값을 값으로 둔다
}
for(int i=0; i<callings.length; i++){
int index = mapName.get(callings[i]); // 호명한 명단의 인덱스번호를 추출한다
// 명단의 위치를 앞뒤로 바꿔줌과 동시에 map의 위치도 앞뒤로 동일하게 바꿔준다
// 임시 문자열 변수를 사용해서 값을 바꿔준다
String temp = "";
temp = answer[index-1];
answer[index-1] = callings[i];
mapName.put(callings[i], index-1);
answer[index] = temp;
mapName.put(temp, index);
}
return answer;
}
}