오늘의 공부 키워드
- 1528 Suffle String
1528 Shuffle String
주어진 문자열 s와 정수 배열 indices가 있습니다. 문자열 s의 각 문자는 indices 배열의 값에 따라 재배열됩니다.
즉, s의 i번째 위치에 있는 문자는 indices[i] 위치로 이동합니다. 재배열된 문자열을 반환해야한다.
예시
- 예시 1:
- 입력: s = "codeleet", indices = [4,5,6,7,0,2,1,3]
- 출력: "leetcode"
- 설명: "codeleet"의 각 문자는 인덱스 배열에 따라 "leetcode"로 재배열됩니다.
- 예시 2:
- 입력: s = "abc", indices = [0,1,2]
- 출력: "abc"
- 설명: 각 문자가 제자리에서 움직이지 않으므로 결과는 "abc"입니다.
제약 조건
- s.length == indices.length == n
- 1 <= n <= 100
- s는 소문자 영어 문자로만 구성됩니다.
- 0 <= indices[i] < n
- indices의 모든 값은 고유합니다.
해결 방법
이 문제를 해결하기 위해서는 다음 단계를 따릅니다:
- indices 배열의 각 위치에 맞게 문자를 재배열할 빈 문자열을 만듭니다.
- indices 배열을 순회하며 각 인덱스 위치에 s의 문자를 배치합니다.
- 재배열된 문자열을 반환합니다.
구체적인 알고리즘은 다음과 같습니다:
- 결과를 저장할 동일한 길이의 빈 리스트 shuffled를 만듭니다.
- indices 배열을 순회하면서, 각 indices[i] 위치에 s[i] 문자를 배치합니다.
- 리스트를 문자열로 변환하여 반환합니다
코드
from typing import List
class Solution:
def restoreString(self, s: str, indices: List[int]) -> str:
shuffled = [''] * len(s)
for i, index in enumerate(indices):
shuffled[index] = s[i]
return ''.join(shuffled)
# 예제 테스트
sol = Solution()
s1 = "codeleet"
indices1 = [4, 5, 6, 7, 0, 2, 1, 3]
print(sol.restoreString(s1, indices1)) # "leetcode"
s2 = "abc"
indices2 = [0, 1, 2]
print(sol.restoreString(s2, indices2)) # "abc"
s3 = "aiohn"
indices3 = [3, 1, 4, 2, 0]
print(sol.restoreString(s3, indices3)) # "nihao"
코드 설명
- shuffled 리스트를 s와 동일한 길이로 초기화합니다.
- indices 배열을 순회하면서 각 인덱스 위치에 s의 문자를 배치합니다.
- 최종적으로 리스트를 문자열로 변환하여 반환합니다.
오늘의 회고
- 부족함을 느끼지만 실력을 늘리는것이 제일 빠른길임을 명심하자
- 새로운 개념을 배울수 있어서 좋았다.
'python' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL (0) | 2024.06.20 |
---|---|
99클럽 코테 스터디 22일차 TIL (0) | 2024.06.19 |
99클럽 코테 스터디 20일차 TIL (0) | 2024.06.17 |
99클럽 코테 스터디 19일차 TIL (0) | 2024.06.16 |
99클럽 코테 스터디 18일차 TIL (1) | 2024.06.15 |