728x90
코드 힌트
- HashMap 활용:
- 2중 for문을 사용하면 시간 초과가 됩니다. 빠르게 탐색을 할 수 있는 방법으로 hashMap을 사용합니다.
- HashMap<String, Integer> map을 사용하여 각 플레이어의 이름과 초기 순위를 저장합니다.
- 호출된 플레이어의 이름을 키로 하여 순위를 빠르게 조회할 수 있습니다.
- 플레이어 순위 변경:
- players 배열의 순서를 변경합니다.
- 호출된 플레이어와 그 앞의 플레이어의 위치를 교환하고, 이에 따라 map에서 각 플레이어의 순위도 업데이트합니다.
- 반복문을 통한 처리:
- callings 배열을 순회하면서 각 호출된 플레이어의 순위를 변경합니다.
- 호출된 플레이어의 이름을 키로 하여 map에서 해당 플레이어의 현재 순위를 조회하고, 이를 기반으로 위치 변경을 수행합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
static HashMap<String,Integer> map = new HashMap<>();
public String[] solution(String[] players, String[] callings) {
// 각 플레이어의 초기 순위를 저장할 HashMap 초기화
for (int i = 0; i < players.length; i++) {
map.put(players[i], i);
}
// callings 배열을 순회하며 호출된 플레이어의 순위를 변경
for (String calling : callings) {
// 호출된 플레이어의 현재 순위를 map에서 가져옴
int idx = map.get(calling);
// 플레이어 위치 교환 메소드 호출
playerSwap(players, idx);
}
// 최종적으로 변경된 players 배열 반환
return players;
}
// 플레이어의 순위를 교환하는 메소드
static void playerSwap(String[] players, int idx) {
// 호출된 플레이어와 그 앞 플레이어의 위치를 변경
String tmp = players[idx - 1];
players[idx - 1] = players[idx];
players[idx] = tmp;
// map에서 각 플레이어의 순위를 업데이트
map.put(players[idx], idx);
map.put(players[idx - 1], idx - 1);
}
}
728x90
'프로그래머스(Java) > Level 1' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2024.08.05 |
---|---|
[프로그래머스] 키패드 누르기 (0) | 2024.08.05 |
[프로그래머스] 수박수박수박수박수박수? (0) | 2024.08.01 |
[프로그래머스] 핸드폰 번호 가리기 (0) | 2024.08.01 |
[프로그래머스] 평균 구하기 (0) | 2024.08.01 |