본문 바로가기
Leetcode

[LeetCode] License Key Formatting 파이썬 (str.replace)

by YGSEO 2021. 4. 29.
728x90
class Solution:
    def licenseKeyFormatting(self, s: str, k: int) -> str:
        tmp = []
        s = s.replace("-","")
        s = s[::-1]
        for i in range(0,len(s),k):
            tmp.append(s[i:i+k])
        # print(tmp)
        
        ans = "-".join([x[::-1] for x in tmp[::-1]])
        return ans.upper()

조건

1. alphanumeric, dashes('-')

2. 정확히 k개의 char만큼씩 group으로 나누어야 함

2-1. 첫번째 group의 경우 1<=n<=k 의 조건을 충족해야함

3. 그룹간에는 dash로 연결.

4. 모두 upper case

 

실행순서

1. 대쉬 replace to whitespace

2. reverse s

3. loop from zero to len(n)-1 by k step.

3-1. append group to tmp list

4. loop tmp by reverse order

4-1. reverse each element in tmp

4-2. join with dash.

 

다른 풀이

class Solution(object):
    def licenseKeyFormatting(self, S, K):
        """
        :type S: str
        :type K: int
        :rtype: str
        """
        result = []
        for i in reversed(range(len(S))):
            if S[i] == '-':
                continue
            if len(result) % (K + 1) == K:
                result += '-'
            result += S[i].upper()
        return "".join(reversed(result))

s를 reverse로 순회.

1. dash는 continue로 스킵

2. result의 length가 K의 배수보다 1큰 경우( 나머지가 K+1일 경우 ), 대쉬 추가

2-1. 대쉬 추가후 계속 string 추가

3. result에 uppercase로 추가

4. join으로 결과물 제출

 

 

출처: github.com/jiapengwen/LeetCode/blob/master/Python/license-key-formatting.py

 

728x90

댓글