PS/LeetCode 1963. Minimum Number of Swaps to Make the String Balanced - Problem : https://leetcode.com/problems/minimum-number-of-swaps-to-make-the-string-balanced Difficulty : Medium Status : Solved Time : 00:01:09 문제 설명 더보기 0-인덱스의 짝수 길이 n의 문자열을 입력으로 받는다. 이 문자열은 정확히 n / 2 개의 여는 대괄호 '['와 닫는 대괄호 ']'로 구성되어 있다. 문자열은 다음 조건을 만족할 때 균형잡혔다고 말할 수 있다. * 문자열이 비었거나, * A, B가 균형잡힌 문자열일때 AB의 형태이거나 * C가 균형잡힌 문자열일때 [C]의 형태일 때. 임의의 두 개의 원소를 어떤 개수로든 교환할 수 있다고 할 때, 문자열 s를 균형잡히게 만들 수 있는 최소 경우의 수를 반환하라. 풀이 보자마자 딱 스택이라고 감이 온 문제. 문자열을 하나씩 탐색하여 균형잡힌 쌍을 전부 제거한다. (제거하는 방법은 스택을 이용하면 쉽다. 스택에 차례로 문자열을 담으며, 균형잡힌 쌍을 비교하며 제거하면 된다) 그렇다면 모든 문자열을 순회했을 때, 스택에 남은 문자들은 불균형잡힌 쌍이 남게 된다. 즉 정확히 이 시점에서의 스택의 길이의 반만큼 교환을 수행하면 최소 교환으로 s를 균형잡히게 만들 수 있는 셈이다. 풀이 코드 class Solution: def minSwaps(self, s: str) -> int: stack = [] for _s in s : if stack and _s == ']' : stack.pop() else : stack.append(_s) return len(stack) // 2 풀이 완료 공유하기 게시글 관리 마젠티노's 저작자표시 비영리 동일조건 'PS > LeetCode' 카테고리의 다른 글 962. Maximum Width Ramp (0) 2024.10.10 921. Minimum Add to Make Parentheses Valid (0) 2024.10.09 2696. Minimum String Length After Removing Substrings (0) 2024.10.07 1590. Make Sum Divisible by P (0) 2024.10.06 2416. Sum of Prefix Scores of Strings (1) 2024.09.25 Contents 당신이 좋아할만한 콘텐츠 962. Maximum Width Ramp 2024.10.10 921. Minimum Add to Make Parentheses Valid 2024.10.09 2696. Minimum String Length After Removing Substrings 2024.10.07 1590. Make Sum Divisible by P 2024.10.06 댓글 0 + 이전 댓글 더보기