[99클럽 코테스터디 2기][Python/비기너] 30번째 문제: Shuffle String

최민지·2024년 6월 18일
0
post-thumbnail

오늘의 주제는 문자열!

[Shuffle String]

문제

입력과 출력

코드

class Solution:
    def restoreString(self, s: str, indices: List[int]) -> str:
        temp=0
        arr=[0 for i in range(len(s))]
        for i in range(len(s)):
            temp=indices[i]
            arr[temp]=s[i]

        result=''.join(arr)
        return result

알고리즘

arr 라는 빈 배열을 s 배열의 길이와 똑같이 초기화를 해주고, indices의 요소를 순서대로 받는데, 이때 이 요소가 arr 의 인덱스가 된다.
arr의 indices[i]번째 인덱스에는 s[i]의 글자를 넣어주고, 이 리스트를 문자열로 변환한 뒤 반환했다.


(아직도 종강 못한 나.. 3시간뒤에 마지막 시험을 앞두고 있다람쥐...)

회고


첫번째 실행결과
알고리즘은 맞았지만 마지막 반환형식이 잘못되었다.
그래서

''.join(arr)

함수를 사용해서 반환하는 타입을 문자열로 바꿔주었다.


성공! 그치만 런타임 끝자락에 있는 거 보고 충격..
코드를 좀 만져야겠다고 생각했다.

for i in range(len(s)):
            temp=indices[i]
            arr[temp]=s[i]

이 부분을 굳이 temp에 받아서 처리해줄 필요가 없을 것 같아서

class Solution:
    def restoreString(self, s: str, indices: List[int]) -> str:
        arr=[0 for i in range(len(s))]
        for i in range(len(s)):
            arr[indices[i]]=s[i]

        result=''.join(arr)
        return result

이렇게 바꿔주었더니

20ms나 줄었다..!! 진짜 그거하나가 컸군..

profile
공부..일기....

0개의 댓글