일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 다이나믹프로그래밍
- 일상회화
- 라이브 아카데미
- BFS
- 백트래킹
- 영어 회화
- N-Queens
- 완전탐색
- Hyperledger Fabric
- 회화기초
- baekjoon
- dfs
- 정렬
- 관계절
- 파이썬
- 백준
- 영어
- 백트래킹 알고리즘
- 영어기초
- 회화
- 영어회와
- 전치사
- used to
- python
- 알고리즘
- 라이브아카데미
- 영어회화
- 블록체인
- Backtracking Algorithm
- IF
Archives
- Today
- Total
내 맴
[ BAEKJOON ] No. 4949 균형잡힌 세상 본문
728x90
문제 )
https://www.acmicpc.net/problem/4949
[ 풀이 ]
✔ Stack을 사용해서 문제를 풀어준다
< blance Function >
1 ) 문장 전체를 for문을 통해 한글자씩 확인 한다
2 )
✔ 문장 중에 ' [ ' or ' ( '이 나오면 stack에 집어넣는다
✔ 문장중에 ' ) '가 나오는 경우
① ') '가 나왔는데 스택이 비어있으면, 균형이 안맞는다는 뜻이므로 return "no"
② stack의 가장 나중 값이 '( ' 이면 균형이 맞으므로 stack에서 꺼내준다
③ stack의 가장 나중 값이 '( ' 이 아닌 경우 균형이 안맞으므로 return "no"
✔ 문장중에 ']'가 나오는 경우
① '] '가 나왔는데 스택이 비어있으면, 균형이 안맞는다는 뜻이므로 return "no"
② stack의 가장 나중 값이 '[ ' 이면 균형이 맞으므로 stack에서 꺼내준다
③ stack의 가장 나중 값이 '[ ' 이 아닌 경우 균형이 안맞으므로 return "no"
3 )
문장을 다 확인해본 후
✔ stack이 비어있다는 것은 균형이 맞는다는 뜻이므로 return "yes"
✔ 비어있지 않은 경우 균형이 맞지 않으므로 return "no"
- python code
# 문자열이 균형을 이루는지 확인하는 Fuction
def balance(string):
stack=[]
for i in string:
if i =='[' or i=='(':
stack.append(i)
elif i==')':
if not stack: #스택이 비어있는경우
return "no"
if stack[-1]=='(':
stack.pop()
else:
return "no"
elif i==']':
if not stack:
return "no"
if stack[-1]=='[':
stack.pop()
else:
return "no"
if not stack:
return "yes"
else:
return "no"
while True:
sentence=input()
if sentence==".": #'.'이 나오면 입력종료
break
print(balance(sentence))
728x90
'Algorithm > Baekjoon 문제풀이' 카테고리의 다른 글
[ BAEKJOON ] No. 2164 카드2 (0) | 2020.04.09 |
---|---|
[ BAEKJOON ] No. 18258 큐2 (0) | 2020.04.08 |
[ BAEKJOON ] No. 9012 괄호 (0) | 2020.04.03 |
[ BAEKJOON ] No. 10733 제로 (0) | 2020.04.02 |
[ BAEKJOON ] No. 10828 스택 (0) | 2020.03.31 |