Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 미세먼지
- 중회귀모형
- MySQL
- 파이썬 철저 입문
- 티스토리챌린지
- Cluster
- 스파르타코딩
- SQL
- 텍스트 분석
- 내일배움
- 스파르타
- 프로젝트
- 내일배움캠프
- 오블완
- R
- 스파르타 코딩
- 내일배움카드
- 프로그래머스
- 파이썬 머신러닝 완벽가이드
- 실전 데이터 분석 프로젝트
- 파이썬 완벽 가이드
- harkerrank
- 파이썬 철저입문
- 파이썬 머신러닝 완벽 가이드
- wil
- 웹 스크랩핑
- TiL
- 회귀분석
- hackerrank
- 파이썬
Archives
- Today
- Total
OkBublewrap
2024-12-03 TIL (Python - Stack) 본문
파이썬 - 균형잡힌 세상
https://www.acmicpc.net/problem/4949
1. 배운 개념 / 주제
- pop() : 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제한다.
a = [1, 2, 3]
a.pop() # pop() = pop(-1)
# 3
a
# [1, 2]
2. 배경 / 왜 배우게 되었는지
- 자료 구조 공부 중 스택을 공부하다가 잘 쓰지 않았던 pop 개념 복습
3. 핵심 내용.
- 스택은 LIFO 구조이고, 가장 마지막에 추가된 요소를 제거해야 한다.
- pop()은 맨 위 요소를 꺼내는 데 적합하다.
4. 사용법 / 문제 풀이
- 마지막으로 '.' 으로 끝나는 문장이다.
- 괄호에는 소괄호, 대괄호를 사용한다.
- 괄호가 짝지어지지 않으면 no, 짝지어있으면 yes 출력
while True:
s = input() # 문자열 변수
if s == '.': # '.' 으로 끝나면 break
break
stack = [] # 데이터 쌓을 스택(리스트)
balanced = True # 균형이 맞는지 확인하는 불리언 값
for i in range(len(s)): # 문자열 크기 만큼 돌면서 괄호 스택 쌓기
if s[i] == '(' or s[i] == '[':
stack.append(s[i])
if s[i] == ')': # 닫는 소괄호를 만났을 때, 쌓은 소괄호가 없으면 불균형
if len(stack) == 0:
balanced = False
break
last = stack.pop(-1)
if last != '(': # 소괄호는 '('와 비교
balanced = False
break
if s[i] == ']': # 닫는 대괄호를 만났을 때, 쌓은 대괄호가 없으면 불균형
if len(stack) == 0:
balanced = False
break
last = stack.pop(-1)
if last != '[': # 대괄호는 '['와 비교
balanced = False
break
if len(stack) != 0: # 모든 괄호가 짝지어져야 함
balanced = False
if balanced:
print('yes')
else:
print('no')
'Today I Learning' 카테고리의 다른 글
2024-12-05 TIL (큐) (0) | 2024.12.05 |
---|---|
2024-12-04 TIL (SQL - generate_series) (0) | 2024.12.04 |
2024-12-02 TIL (Funnel) (0) | 2024.12.02 |
WIL - 1주차 (1) | 2024.11.30 |
2024-11-29 TIL (데이터 잘보기) (1) | 2024.11.29 |