처음 코드
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = {};
Map<Integer,String> map = new HashMap<Integer,String>();
for(int i=0;i<players.length;i++){
map.put(i,players[i]);
}
for(String call : callings){
int i = getKey(map,call);
String getName = (String)map.get(i-1);
map.put(i,getName);
map.put(i-1,call);
}
Collection<String> values = map.values();
answer = values.toArray(new String[0]);
return answer;
}
public int getKey(Map<Integer,String> map, String call){
for(Integer key : map.keySet()){
if(call.equals(map.get(key))){
return key;
}
}
return 0;
}
}
수정코드
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
HashMap<String, Integer> mappedByPlayer = new HashMap<>();
HashMap<Integer, String> mappedByRank = new HashMap<>();
for (int i = 0; i < players.length; i++) {
mappedByPlayer.put(players[i], i);
mappedByRank.put(i, players[i]);
}
for (int i = 0; i < callings.length; i++) {
int currentRank = mappedByPlayer.get(callings[i]);
String player = mappedByRank.get(currentRank);
String frontPlayer = mappedByRank.get(currentRank - 1);
mappedByPlayer.put(player, currentRank - 1);
mappedByPlayer.put(frontPlayer, currentRank);
mappedByRank.put(currentRank - 1, player);
mappedByRank.put(currentRank, frontPlayer);
}
for (int i = 0; i < players.length; i++) {
answer[i] = mappedByRank.get(i);
}
return answer;
}
}
이번 알고리즘 문제를 풀면서 import를 통해 라이브러리를 가져오는것과, 다른분들의 코드를 보면서
for문을 쓰더라도 효율적으로 쓰는걸 배웠다.
아침에 팀원분들이 작성한 코드를 보면서 내 코드는 뭔가 잘못되었다는걸 깨달았다.
그래도 든든한 팀원분들이 인텔리제이의 Code With me를 통해 도와주셔서
User데이터를 가져와서 인증하는 코드로 탈바꿈하였다.
그래도 아직 이해가 덜 가서..
특히 CommentLike부분의 복합키 부분과
builder와
ID 사용하는 부분
쪽을 더 공부 해 봐야할것 같다.
그래도 테스트를 해보니 Comment부분은 데이터 잘 들어가서 뿌듯하다!