티스토리 뷰
정답 코드
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
Map<Integer, String> numberMap = new HashMap<>(); // key가 순서, value가 이름
Map<String, Integer> nameMap = new HashMap<>(); // key가 이름, value가 순서
for(int i = 0; i < players.length; i++) { // map 초기화
numberMap.put(i, players[i]);
nameMap.put(players[i], i);
}
for(String calling : callings) { // 이름이 나오면 앞에 번호와 순서를 바꾼다.
Integer i = nameMap.get(calling);
numberMap.put(i, numberMap.get(i - 1));
nameMap.put(numberMap.get(i), i);
numberMap.put(i - 1, calling);
nameMap.put(calling, i - 1);
}
String[] answer = new String[players.length];
for(int i = 0; i < players.length; i++) {
answer[i] = numberMap.get(i);
}
return answer;
}
}
처음 풀 때는 이중 for문으로 앞뒤 순서를 바꿨는데 O(N^2) 걸려서 시간 초과가 나왔다.
이를 해결하기 위해 map을 사용하여 시간을 줄였다.
'알고리즘 > Programmers' 카테고리의 다른 글
[Level2] 광물 캐기 (JAVA) (0) | 2023.04.22 |
---|---|
[Level2] 무인도 여행 (JAVA) (0) | 2023.04.20 |
[Level2] 과제 진행하기 (JAVA) (0) | 2023.04.19 |
[Level2] 두 원 사이의 정수 쌍 (JAVA) (0) | 2023.04.17 |
[Level1] 성격 유형 검사하기 (JAVA) (0) | 2023.04.09 |
댓글