[LeetCode] 791. Custom Sort String

Songhee Park·2024년 5월 30일

LeetCode

목록 보기
3/3

문제 설명


사용자 지정 알파벳 순서로 정렬한 결과 + 사용자 지정에 없는 알파벳은 나중에 붙인 결과 값을 출력하는 문제이다. 이전에 풀었던 vote해서 정렬하는 문제 복습 느낌으로, dict.get 도 쓸 수 있고, join 함수도 써볼 수 있어서 좋은 문제인듯.

https://leetcode.com/problems/custom-sort-string/

풀이 및 해설


class Solution:
    def customSortString(self, order: str, str: str) -> str:
        priority ={key:index for index, key in enumerate(order)}
        a, b = [], []
        for char in str:
            if char in order:
                a.append(char)
            else:
                b.append(char)

        return ''.join(sorted(a, key=lambda x: priority[x])) + ''.join(b)
class Solution:
    def customSortString(self, order: str, str: str) -> str:
        priority = {key:value for value, key in enumerate(order)}
        s = [x for x in str if x in order]
        t = [x for x in str if x not in order]
        return ''.join(sorted(s, key=priority.get)) + ''.join(t)

같은 풀이 맞다. 문제 풀이가 필요한가? 간단하니 개념만 정리하고 넘어가자.

🤓 같은 역할을 하는 두 코드
''.join(sorted(a, key=lambda x: priority[x]))
''.join(sorted(s, key=priority.get))

key 에 어떤 값이 들어가는지 보면, priority 딕셔너리 값을 집어넣는데 어떤 식으로 집어넣는지에 따라 다르게 적을 수 있다. lambda x: priority[x]priority.get가 사실상 같은 역할을 한다는 게 키 포인트!

🧐 실행 시간?
코드 자체만으로 비교하면 2번째 솔루션이 더 오래 걸리긴 하는데 그건 list 만드는 오버헤드 차이 때문이지 정렬 그 자체에서 유의미하게 시간 차이가 발생하지는 않는다.

profile
오늘 뭐 배웠지? 잊어버리기 전에 기록하자 :)

0개의 댓글