본문 바로가기
알고리즘 문제 풀이

1528. Shuffle String

by 가나무마 2021. 5. 25.
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
반응형