본문 바로가기
728x90

스택6

[백준] 1918 후위 표기식 python 알고리즘 문제 문제 1918. 후위 표기식 1. 나의 코드와 발상 과정 최근 자료구조 공부를 하다가 기본 자료구조인 스택을 배웠는데, 대표적인 활용 예시로 괄호와 계산기에 적용을 연습하였다. 연산자와 피연산자, 이항연산자, 단항연산자, infix 수식, postfix 수식을 알 수 있었는데, infix 수식에서 postfix 수식으로 바꿀 때, 연산자 스택과 피연산자 스택을 따로 두고 섞어 담아 출력하면 postfix 수식이 된다는 것을 알 수 있었다. 그 기억을 살려 아래와 같이 두 개의 스택을 놓고 코딩을 진행했다. n = list(input()) stack = [] outstack = [] operator = {'(' : 0, '+' : 1, '-' : 1, '*' : 2, '/' : 2} for i in n: .. 2022. 5. 15.
[자료구조] 스택, 큐, 덱 [자료구조] 스택, 큐, 덱 들어가며. 스택, 큐, 덱은 알고리즘이라기 보다는 data를 관리하는 구조라고 할 수 있다. 스택, 큐, 덱을 활용한 알고리즘이 BFS, DFS 등등이 되는 것이다. 비유를 하자면, 우리가 운동할 때 힘(input)을 들여 수축과 이완(자료구조)을 통해 어떤 자세(알고리즘)를 반복 수행해서 근육을 얻고 지방을 태우는(Output) 과정을 수행하는 것에 비유를 할 수 있겠다. 운동은 굽히고 펴는 것부터 시작한다. 이처럼 기본적인 것이 자료구조이며, 이를 잘 알고 이에 대한 특성을 잘 활용할 때 좋은 알고리즘을 통해 뛰어난 프로그램을 만들 수 있는 것이다. 1. 기본적인 개념 더보기 배열(Array) vs 리스트(list) 가장 기본이 되는 순차적(sequential) 자료 구조.. 2022. 4. 27.
[백준] 4949 균형잡힌 세상 python 알고리즘 문제 문제 4949. 균형잡힌 세상 1. 나의 코드와 발상 과정 import sys answer_list = [] while True: a = sys.stdin.readline().rstrip() if a == '.': break answer = [] for i in a: if i.isalpha() or i == " ": continue elif i == '.': break elif i == '(': answer.append(i) elif i == '[': answer.append(i) elif i == ')': if len(answer) != 0 and answer[-1] == '(': answer.pop() else: answer.append(')') continue elif i == ']': if len.. 2022. 4. 25.
[백준] 9012 괄호 python 알고리즘 문제 문제 9012. 괄호 1. 나의 코드와 발상 과정 ### 오답 from collections import deque queue = deque() n = int(input()) vps_list = list() ans_list = [] for i in range(n): vps_list.append(deque(input())) for vps in vps_list: if len(vps) % 2 != 0 or vps[0] == ')': ans_list.append('NO') continue else: while True: if len(vps) == 0: ans_list.append('YES') break if vps[-2] == '(' and vps[-1] == ')': vps.pop() vps.pop() els.. 2022. 4. 25.
[백준] 10773 제로 python 알고리즘 문제 문제 10773. 제로 1. 나의 코드와 발상 과정 import sys k = int(sys.stdin.readline()) money_list = [] for i in range(k): a = int(sys.stdin.readline()) if a == 0: money_list.pop() else: money_list.append(a) print(sum(money_list)) 문제도 어렵지 않았고, 코드 구성도 간단했다. money_list 속에 a를 받아오는데, 만약 0이라면 현재 입력값을 넣지 않고, 그 전 반복에서 넣었던 숫자를 뺀다. a가 0이 아닐 경우에만 계속 list에 집어 넣고, money_list의 전체 입력값을 더해 출력한다. 문제 출처: https://www.acmicpc.net/p.. 2022. 4. 24.
[백준] 10828 스택 python 알고리즘 문제 문제 10828. 스택 1. 나의 코드와 발상 과정 import sys n = int(input()) queue = [] for _ in range(n): order = sys.stdin.readline().strip() if order[0:4] == 'push': queue.append(int(order[5:])) elif order[0:3] == 'top': if not queue: print(-1) else: print(queue[-1]) elif order[0:4] == 'size': print(len(queue)) elif order[0:5] == 'empty': if len(queue) == 0: print(1) else: print(0) else : if not queue: print(-1).. 2022. 4. 24.
728x90