알고리즘 문제 풀이
1528. Shuffle String
가나무마
2021. 5. 25. 23:37
[처음 짠 코드]
처음 생각한 코드는 인덱스는 중복이 안 되고 문자와 세트이므로 map으로 넣은 후에 key를 정렬해서 받아오는 방법을 생각함.
import java.util.HashMap;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
class Solution {
public String restoreString(String s, int[] indices) {
Map<Integer, Character> map = new HashMap<>();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < indices.length; i++) {
map.put(indices[i], s.charAt(i));
}
SortedSet<Integer> keys = new TreeSet<>(map.keySet());
for (int key : keys) {
sb.append(map.get(key));
}
return new String(sb);
}
}
정렬 작업이 들어가므로 쓸 데 없이 시간이 더 오래 걸리게 되므로 실행 속도가 엄청 느렸음.
따라서 정렬 작업이 필요 없이 짜기로 함.
[보완한 코드]
import java.util.Arrays;
class Solution {
public String restoreString(String s, int[] indices) {
char[] charArray = new char[s.length()];
String answer;
for (int i = 0; i < indices.length; i++) {
int index = indices[i];
charArray[index] = s.charAt(i);
}
return new String(charArray);
}
}
주어진 문자열의 길이와 같은 문자 배열을 만든 후
인덱스에 순서대로 접근함.
인덱스의 각 값이 문자 배열의 들어가야할 위치이므로 거기에 문자를 넣어줍니다.