https://school.programmers.co.kr/learn/courses/30/lessons/178871
시도 1)
import java.util.Arrays;
class Solution {
public String[] solution(String[] players, String[] callings) {
for(int i=0; i<callings.length; i++)
{
int idx = Arrays.asList(players).indexOf(callings[i]);
//players[idx]와 players[idx-1] 값 교환
String temp="";
temp = players[idx];
players[idx] = players[idx-1];
players[idx-1] = temp;
}
return players;
}
}
정답
- HashMap에 plyers의 이름을 key로 인덱스를 value로 설정하여 배열을 순회하지 않고 시간복잡도 O(1)로 플레이어 찾기
import java.util.HashMap;
class Solution {
public String[] solution(String[] players, String[] callings) {
HashMap<String, Integer> map = new HashMap<>();
// 플레이어의 이름과 인덱스를 매핑하여 해시맵에 저장
for (int i = 0; i < players.length; i++) {
map.put(players[i], i);
}
for (String calling : callings) {
int idx = map.get(calling);
// 플레이어의 순서 변경
if (idx > 0) {
String temp = players[idx];
players[idx] = players[idx - 1];
players[idx - 1] = temp;
// 해시맵에서도 플레이어의 순서 변경 반영
map.put(players[idx], idx);
map.put(players[idx - 1], idx - 1);
}
}
return players;
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 두 정수 사이의 합 (0) | 2024.05.16 |
---|---|
[JAVA] 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) | 2024.05.16 |
[JAVA] 프로그래머스 - x만큼 간격이 있는 n개의 숫자 (0) | 2024.05.15 |
[JAVA] 프로그래머스 - 추억 점수 (0) | 2024.05.15 |
[JAVA] 프로그래머스 - 하샤드 수 (0) | 2024.05.15 |