1. 문제
2. 문제 해결 논리
1. 문제 이해
- 데이터 구조 결정
- HashMap 이용
- 선수(players 배열의 원소)와 등수(players 배열 각 원소의 인덱스) 저장
- HashMap 이용
2. 알고리즘 설계
- HashMap을 players 배열로 초기화
- callings 배열 순회
- HashMap에서 player의 등수 추출
- 버블 정렬을 이용하여 players 배열 갱신
- HashMap 등수 갱신
3. 코드 구현
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
//1. HashMap으로 초기화
HashMap<String, Integer> rankMap = new HashMap<>();
for (int i = 0; i < players.length; i++) {
rankMap.put(players[i], i);
}
//2. callings 배열 순회
for (String player : callings) {
//2-1. HashMap에서 player의 등수 추출
int ownRank = rankMap.get(player);
//2-2. 버블정렬 적용하여 players 배열 갱신
String beforePlayer = players[ownRank - 1];
players[ownRank-1] = player;
players[ownRank] = beforePlayer;
//2-3. HashMap에 등수 갱신
rankMap.put(player, ownRank - 1);
rankMap.put(beforePlayer, ownRank);
}
return players;
}
}
반응형
'PS > Programmers' 카테고리의 다른 글
[level1, for문] 콜라 문제 (0) | 2023.05.15 |
---|---|
[level1, HashSet/TreeSet] 두 개 뽑아서 더하기 (0) | 2023.03.30 |
[level1, 배열/정렬] K번째수 (0) | 2023.03.29 |
[level1, 비트 연산] [1차] 비밀지도 (0) | 2023.03.27 |
[level1, Arrays] 삼총사 (0) | 2023.03.26 |