본문 바로가기

Algorithm/Implementation

(Python3) - LeetCode (Medium) : 3223. Minimum Length of String After Operations

반응형

https://leetcode.com/problems/minimum-length-of-string-after-operations

문제 아이디어로 해결한 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

📑 s의 길이 length선언 후 저장합니다.

📑 s의 문자별 빈도수를 저장할 Counter s_counter를 선언 후 저장합니다.

📑 정답 변수 ans 선언 후 0으로 초기화합니다.

📔 풀이과정

📑 자기 자신을 제외한 양 옆의 같은 문자를 지울 수 있기 때문에 2를 초과하는 빈도 수의 문자들은 모두 1개 또는 2개로 줄일 수 있습니다.

1. 빈도 수가 2개를 초과하는 홀수인 경우 가운데 문자의 양 옆을 짝수개로 제거할 수 있으므로 1개의 문자가 남습니다.

2. 빈도 수가 2개를 추과하는 짝수인 경우 문자의 양 옆을 짝수개로 제거할 수 있으므로 2개의 문자가 남습니다.

3. 2개 이하인 경우 지울 문자가 없으므로 그대로 남습니다.

ans에 1,2,3경우에 해당하는 값들을 s_counter의 원소를 순회하며 더해줍니다.

📔 정답 출력 | 반환

ans를 반환합니다.


📕 Code

📔 Python3

from collections import Counter

class Solution:
    def minimumLength(self, s: str) -> int:
        length = len(s)
        if length < 2:
            return length
        s_counter = Counter(s)
        ans = 0
        for _, freq in s_counter.items():
            if freq < 2:
                ans += freq
            elif freq % 2 == 0:
                ans += 2
            elif freq % 2 == 1:
                ans += 1
        return ans

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