티스토리 뷰
https://www.acmicpc.net/problem/4889
👩💻문제 이해
입력된 문자열 전체에서 생각하지 말고, 기준을 잡고, 한 단위씩('{}') 끊어서 생각하면 편하다.
'{}' 닫힌 형태가 나오면 안정적인 문자열인 것이다.
그래서 첫 문자가 '{'가 나올 때까지 count를 해주고 그 문자는 pop으로 빼준다음, '{'가 나오면 그때부터 다시 한 단위씩 생각하면 된다.
기준은 '{' 가 된다.
풀이법
1. 기호 '{'를 추가할 빈 리스트 stack를 만들어준다.
2. 문자열을 탐색하면서 1) 빈 문자열에 '}'이 나올 경우 -> count를 +1 해준다.
2) stack에 '{'이 담겨 있을 때, '}'이 나올 경우 -> (안정적인 문자열 한쌍 완성) stack에서 '{'를 pop으로 빼주어 다시 stack을 빈 문자열로 만들어준다.
3) stack에 '{'이 담겨 있을 때, '{'이 나올 경우 -> stack에 추가
3. (stack 리스트 길이) // 2 와 count를 더한 값을 answer 리스트에 추가
-( // 2) 를 해주는 이유는 ex) '{{'로 끝났을 때 -> 1개만 수정하면 됨
'{'로 끝났을 때 -> 안정된 문자열을 만들 짝이 없으므로 0
4. 답을 포맷에 맞게 출력
👩💻'{'를 기준으로 판단 : 성공🌈
answer = []
while True:
stack = []
count = 0
s = input()
if '-' in s:
break
for i in range(len(s)):
if not stack and s[i] == '}':
count += 1
stack.append('{')
print(stack)
elif stack and s[i] == '}':
print(stack)
stack.pop()
print(stack)
else:
stack.append(s[i])
print(stack)
count += len(stack)//2
answer.append(count)
for i in range(len(answer)):
print(i+1, '. ', answer[i], sep='')
✨Point✨
list A가 비어있을 때,
not A -> True
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 10773번 : 제로 (1) | 2022.10.03 |
---|---|
[Python] 백준 알고리즘 10845번 : 큐 (0) | 2022.09.27 |
[Python] 백준 알고리즘 1874번 : 스택 수열 (1) | 2022.09.23 |
[Python] 백준 알고리즘 10994번 : 별 찍기 - 19 (1) | 2022.09.21 |
[Python] ⭐️백준 알고리즘 11729번 : 하노이 탑 이동 순서 (0) | 2022.09.20 |
댓글