본문 바로가기

Algorithm/Implementation

(Python3) - LeetCode (easy) 1957. Delete Characters to Make Fancy String

반응형

https://leetcode.com/problems/delete-characters-to-make-fancy-string/description/

간단 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

fancyStr, index i를 선언 후 적절히 초기화해줍니다.

📔 풀이과정

pythond의 for loop의 range로 index를 돌때 for loop내 index값을 바꿔도 반영되지 않습니다.

 

📑 예시

for i in range(5):
    print(f"i before change: {i}")
    i += 2
    print(f"i after change: {i}")
i before change: 0
i after change: 2
i before change: 1
i after change: 3
i before change: 2
i after change: 4
i before change: 3
i after change: 5
i before change: 4
i after change: 6

따라서 while loop를 수행해야하며 수행하면서 다음을 진행합니다.

1. 지역변수 cnt(연속된 빈도 수)를 선언 후 1로 초기화합니다.

2. 인접한 문자가 같은 동안 while loop를 수행하며 i를 증가시켜줍니다. 두 번을 초과해 연속되면 안되므로 2미만인 경우에만 cnt를 1씩 증가시켜줍니다.

3. 반복된 cnt개수만큼 현재 문자 s[i]를 곱해 fancyStr 뒤에 붙여줍니다.

4. i를 증가시켜줍니다.

📔 정답 출력 | 반환

fancyStr를 반환합니다.


📕 Code

📔 Python3

class Solution:
    def makeFancyString(self, s: str) -> str:
        fancyStr = ""
        i = 0
        while i < len(s):
            cnt = 1
            while i+1 < len(s) and s[i] == s[i+1]:
                i += 1
                if cnt < 2:
                    cnt += 1
            fancyStr += s[i] * cnt
            i+=1

        return fancyStr

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.