일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- SWEA
- 디자인패턴
- 삼성 청년 sw아카데미
- 마이스터고
- 파이썬
- 우테코 프리코스
- 우테코 7기
- 삼성 청년 SW 아카데미
- dfs
- 개발자
- 정처기
- 코딩
- 코딩테스트
- 코테
- 13기
- 삼성청년SW아카데미
- 백준 2003
- 싸피 13기
- 프리코스
- 백준
- 삼성 부트캠프
- 싸피
- 부트캠프
- SSAFY
- 정보처리기사
- 삼성
- 비전공자
- 취뽀
- 우테코
- UML
Archives
- Today
- Total
룰루코딩
백준 4949 균형잡힌 세상 본문
문제
솔루션
while(True):
text = input()
if(text == "."):
break
stack = []
for i in text:
if(i == "(" or i == "["):
stack.append(i)
if(i == ")"):
if(len(stack) != 0 and stack[-1] == "("):
stack.pop()
else:
stack.append(")")
break
if(i == "]"):
if(len(stack) != 0 and stack[-1] == "["):
stack.pop()
else:
stack.append("]")
break
if(len(stack) == 0):
print("yes")
else:
print("no")
깨달은점
문장에서 괄호의 짝이 올바른지를 확인하기위해 스택을 이용해야했다.
for i in text:
if(i == "(" or i == "["):
stack.append(i)
if(i == ")"):
if(len(stack) != 0 and stack[-1] == "("):
stack.pop()
else:
stack.append(")")
break
if(i == "]"):
if(len(stack) != 0 and stack[-1] == "["):
stack.pop()
else:
stack.append("]")
break
이 부분이 핵심으로
( 또는 [ 나오면 stack에 추가하여 기록해두고
)나 ]가 나오면 stack에서 마지막 괄호가 올바른 짝인지 확인해 맞으면 pop로 스택에서 제거한다.
stack이 비어 있거나 짝이 맞지 않으면 잘못된 괄호 구조로 스택에 추가하고 break을 통해 반복을 중단한다.
그 후 스택의 길이에 따라 0으로 다 없어지지 않았으면 no를 출력하고 스택이 비어있으면 yes를 출력하는 구조이다.
'백준' 카테고리의 다른 글
백준 1100 하얀 칸 (0) | 2024.10.27 |
---|---|
백준 1874 스택 수열 (0) | 2024.10.27 |
백준 1966 프린터 큐 (0) | 2024.10.27 |
백준 18258 큐2 (0) | 2024.10.26 |
백준 28278 스택2 (0) | 2024.10.14 |