[LeetCode] 763. Partition Labels
Updated:
763. Partition Labels
λ¬Έμμ΄μ μ΅λν λ§μ΄ μͺΌκ°μ μͺΌκ° λ©μ΄λ¦¬ μμ μ΅λν κ°κ°μ μνλ²³μ΄ λ§μ΄ μκ² ν΄μΌνλ€.
맀 μκ° μκ° μ΅μ μ λ€νλ νμ μκ³ λ¦¬μ¦μ μ¬μ©νλ©΄ λλ€.
λ¨Όμ S λ₯Ό S μ 첫 λ²μ§Έ μνλ²³μ΄ λ§μ§λ§μΌλ‘ λμ€λ μκ°κΉμ§ μͺΌκ° partition μ λ§λ λ€.
κ·Έ λ€μ partition μμ λ λ²μ§Έ μνλ²³μ΄ λ§μ§λ§μΌλ‘ S μμ λμ€λ μκ°μ μ°Ύμ Sμ μ²μλΆν° κ·Έκ³³κΉμ§λ₯Ό partition μ μ΄μ΄ λΆμΈλ€.
partition μ λ§μ§λ§ μνλ²³ κΉμ§ λ°λ³΅νλ€. S κ° μμ λ κΉμ§ λ°λ³΅νλ©΄ λ΅μ ꡬν μ μλ€.
μ£Όμ΄μ§ μμλ₯Ό ν΅ν΄ κ³Όμ μ μ΄ν΄λ³΄λ©΄ μ²μμ partition = ababcbaca, S = defegdehijhklij λ‘ λλ μ μλ€.
μ΄λ partitionμ μ΄λ€ μνλ²³λ S μ μμ§ μκΈ° λλ¬Έμ λ μ΄μ μ΄μ΄λΆμΌ ꡬκ°μ΄ μλ€.
λ€μμΌλ‘ partition = defegd, S = ehijhklij λ‘ λλ μ μλ€. μ΄λ partition μ μλ e κ° S μ μκΈ° λλ¬Έμ μ΄μ΄ λΆμΈλ€.
κ·Έλ κ² λλ©΄ partition = defegde, S = hijhklij κ° λλ€. λλ¨Έμ§ S λ λκ°μ΄ λ°λ³΅νλ©΄ λλ€.
from typing import List
class Solution:
def partitionLabels(self, S: str) -> List[int]:
output = []
idx = 0
while S:
find_alpha = S[0]
for i, val in enumerate(S[::-1]):
if val == find_alpha:
idx = len(S) - i - 1
break
partition = S[:idx + 1]
S = S[idx + 1:]
p_idx = 0
while p_idx < len(partition):
add_idx = -1
for i, S_val in enumerate(S[::-1]):
if partition[p_idx] == S_val:
add_idx = len(S) - i - 1
break
if add_idx >= 0:
partition += S[:add_idx + 1]
S = S[add_idx + 1:]
p_idx += 1
output.append(len(partition))
return output
Leave a comment