코딩 테스트/leetCode

[leetCode] 1528. Shuffle String (Python)

우주바다 2022. 10. 29. 12:03
728x90

▼ 문제 바로가기 (링크) 

https://leetcode.com/problems/shuffle-string/

 

Shuffle String - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


서로 길이가 같은, 문자열 s와 정수 배열 indices가 주어진다.

s의 char들이 indices 값을 인덱스로 해서 재배치 된 값을 반환하는 문제.

class Solution:
    def restoreString(self, s: str, indices: List[int]) -> str:
        chars = list(s)
        pair = dict(zip(indices,chars))       
        pair = sorted(pair.items())      
        a = ""  
        for i in pair:
            a += i[1]
        return a

우선 문자열 s을 char 단위로 잘라서 인덱스와 연결해야겠다고 생각했다.

zip으로 두 리스트를 묶어서 딕셔너리 형태로 저장하고

key를 기준으로 정렬하고 반복문으로 값을 빈 문자열 변수에 이어붙여 완성했다.


처음 봤을 때 잘 모르겠어서 조금 풀어보다가 넘겨놨던 문제인데

다시 보니 금방 풀려서 기분 좋았다!

매일 1시간 이상 투자한 지 3주 째 되었으니..확실히 늘긴 하는구나..

일단 쉽게 풀 수 있는 것 부터 차근차근 풀길 잘했다.

중간에는 너무 쉬운 것만 하면 언제 어려운거 하나.. 막막하고

망치는 것 같은 찜찜함도 있었는데 잘 참았다. 

 

zip을 바로 생각해내서 써본 적은 없었는데 그 동안 다른 풀이법을

찾아보면서 기억해둔 덕분에 바로 적용할 수 있었다. 

딕셔너리 정렬은 아직 조금 헷갈려서 .items가 값 기준 정렬인 줄 알았는데

.keys와 마찬가지로 키 기준 정렬이고 반환되는 값이 다른 거였다.

키는 딱 키만, items는 키,밸류 둘 다 반환.

.sort()는 자체를 바꾸는 것, sorted는 새로운 리스트로 반환하는 것.

 

참고: https://blockdmask.tistory.com/466

728x90
반응형