728x90
[처음 짠 코드]
처음 생각한 코드는 인덱스는 중복이 안 되고 문자와 세트이므로 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);
}
}
주어진 문자열의 길이와 같은 문자 배열을 만든 후
인덱스에 순서대로 접근함.
인덱스의 각 값이 문자 배열의 들어가야할 위치이므로 거기에 문자를 넣어줍니다.
728x90
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
1431. Kids With the Greatest Number of Candies (0) | 2021.06.10 |
---|---|
1827. Minimum Operations to Make the Array Increasing (0) | 2021.06.08 |
(아직안끝남)1351. Count Negative Numbers in a Sorted Matrix (0) | 2021.06.02 |
1281. Subtract the Product and Sum of Digits of an Integer (0) | 2021.05.25 |
1561. Maximum Number of Coins You Can Get (0) | 2021.05.13 |