스택

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    🤔문제 해결 괄호 회전 괄호 체크 스택을 이용하여 괄호의 짝이 맞는지 체크 주어진 괄호(회전을 마친 괄호)를 쪼개서 하나씩 가져온다 가져온 괄호가 왼쪽 괄호이면 스택에 넣고 오른쪽 괄호이면 스택의 제일 위에있는 괄호와 비교하여 짝이 맞는지 체크 짝이 맞지 않으면 올바른 괄호가 아니다. 스택이 비어있으면 올바른 괄호가 아니다. 괄호 체크가 끝나고 스택에 남아있는 괄호가 있으면 올바른 괄호가 아니다 💨 오브젝트의 키, 밸류 가져오기: Object.keys(my_object), Object.values(my_object) 💨 배열에 특정 요소 포함 여부: my_list.includes(my_elem) 💻소스 코드 function solution(s) { var answer = 0; var length = s...

    스택(Stack)

    스택(Stack)

    스택 데이터를 임시 저장할 때 사용하는 자료구조, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식이다. 한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형구조로 되어있다.데이터를 넣을 때는 push, 데이터를 꺼낼 때는 pop을 사용한다. 파이썬에서는 보통 스택을 구현하지 않고 리스트로 만들고 append 해서 데이터를 넣거나 pop으로 데이터를 꺼낸다.아래의 코드는 스택을 클래스로 구현해본 것이다. 코드 class Stack: class Empty(Exception): """스택이 비어있을 때 pop 또는 peek 를 수행할 때 예외 처리""" print("야") pass class Full(Exception): """스택이 가득일 때 push 를 수행할 때 예외 처리""" pass def __in..

    [python] 백준 - 1874. 스택 수열

    [python] 백준 - 1874. 스택 수열

    🤔문제 해결 S2 | 스택 수열 스택을 이용한 문제 스택에 값이 있고 스택의 마지막 값이 뽑아야 하는 값이면 pop 그렇지 않을 때 넣어야할 숫자가 n보다 작으면 push 둘 다 아니면 break 스택에 계속 넣는 것을 먼저 생각하는 것보다 스택에서 값을 빼는 걸 먼저 생각해야 한다. ( 연속으로 뽑을 수 있기 때문 ) 💻소스 코드 import sys input = sys.stdin.readline numbers = [] n = int(input()) for _ in range(n): numbers.append(int(input())) stack = [] result = [] number = 1 idx = 0 while idx < n: if stack and stack[-1] == numbers[idx]..

    [python] 백준 - 2504. 괄호의 값

    [python] 백준 - 2504. 괄호의 값

    🤔문제 해결 S2 | 스택, 자료구조, 구현, 재귀 괄호문제는 항상 스택으로 풀었다. 먼저 올바른 괄호인지 체크하자! 그 다음 스택을 이용해 괄호 짝을 맞추면서 ()일 때 2, []일 때 3을 계산해준다. 만약 스택의 마지막에 숫자가 있다면 곱해준다. 만약 스택에 숫자가 연속으로 나열되면 더해준다. 💻소스 코드 def is_right(s): stack = [] for ss in s: if ss == '(': stack.append(ss) elif ss == ')': if stack and stack[-1] == '(': stack.pop() else: return False elif ss == '[': stack.append(ss) elif ss == ']': if stack and stack[-1] =..

    [python] 백준 - 13335. 트럭

    [python] 백준 - 13335. 트럭

    🤔문제 해결 S1 | 스택 대기중인 트럭, 다리위의 트럭, 다리위의 트럭의 진입 시간 을 각각의 리스트로 구성한다. 다리 위의 트럭 중 가장 앞쪽의 트럭의 진입 시간 + 다리의 길이 가 현재시간과 같으면 그 트럭을 빼준다. (도착) 다리 위의 트럭 무게의 합 + 대기 중인 트럭 중 가장 앞쪽의 트럭 무게 가 다리의 하중보다 작으면 그 트럭을 대기중인 트럭에서 빼서 다리위의 트럭으로 넣어준다. (출발) 💨 💻소스 코드 from collections import deque def solution(n, w, L, trucks): trucks = deque(trucks) # 대기중인 트럭 on_the_bridge = deque() # 다리위의 트럭 departure_time_truck = deque() # 각 ..

    [python] SWEA - 5432. 쇠막대기 자르기

    [python] SWEA - 5432. 쇠막대기 자르기

    문제 해결 1. D4 | 큐, 스택 2. 주어진 인풋값을 차례로 하나씩 큐에 넣을 준비를 한다. 3. '(' 이면 큐에 넣는다. 4. ')' 일 때 (1) 이전에 '(' 이 나왔다면 레이저이므로 잘라준다. - 이 때 큐 안에 있는 갯수 만큼 조각이 나온다. (2) 이전에 ')' 이 나왔다면 끝부분이다. 큐 안에서 시작부분을 하나 꺼내주고 조각 갯수를 +1한다. 💨 전에 풀어 봤던 느낌이 나는 문제이다. 큐스택을 활용해 조건에 맞게 꺼내주고 빼주고 하면 된다. 소스 코드 from _collections import deque for tc in range(1, 1+int(input())): iron_bar = input() q = deque() cnt = 0 for i in range(len(iron_bar..