class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
HashMap<String, Integer> Player = new HashMap<>();
HashMap<Integer, String> Rank = new HashMap<>();
for (int i = 0; i < players.length; i++) {
Player.put(players[i], i);
Rank.put(i, players[i]);
}
for (String calling : callings) {
int currentRank = Player.get(calling);
String player = Rank.get(currentRank);
String frontPlayer = Rank.get(currentRank - 1);
Player.put(player, currentRank - 1);
Player.put(frontPlayer, currentRank);
Rank.put(currentRank - 1, player);
Rank.put(currentRank, frontPlayer);
}
for (int i = 0; i < players.length; i++) {
answer[i] = Rank.get(i);
}
return answer;
}
}
1. map을 두 개 선언해 하나는 플레이어 기준, 하나는 순위 기준으로 초기화 한다
2. 추월한 유저의 순위와 추월한 유저의 이름, 바로 앞 플레이어를 초기화한다
3. 이름 불린 선수와 그 전에 있던 선수의 위치를 바꿔준다
4. map으로 저장된 결과를 배열로 바꾸어 준다 -> 스트림보다 for문 돌리는게 빠른걸 지난주에 확인해서 for문으로 해결했다
'Algorithm > 프로그래머스' 카테고리의 다른 글
[Lv. 1] 신규 아이디 추천 (0) | 2023.08.20 |
---|---|
[Lv. 2] 카펫 (0) | 2023.08.08 |
[Lv. 1] 체육복 (0) | 2023.08.08 |
[Lv. 2] 영어 끝말잇기 (0) | 2023.07.30 |
[Lv. 1] 개인정보 수집 유효기간 (0) | 2023.07.30 |
댓글