반응형
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
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.