스택
-
[n521] Data StructureAI 부트캠프 2022. 1. 25. 09:44
자료구조 선형 자료구조 : 데이터들을 일렬로 나열된 형태로 저장할 때 사용 (정적)배열, 동적 배열, 연결 리스트 배열 : 반드시 선언할 때 크기를 결정 => 크기는 고정적, 절대 변경 불가. 메모리 상에서 배열의 원소들이 연속적으로 붙어 있다. 장점 : 인덱스를 통해서 빠르게 접근 가능 (Read가 쉽다) 단점 : 크기가 고정적이므로 그 크기보다 많은 데이터가 들어오면 혼란스럽다. 데이터 추가 : O(n) 동적 배열 : 배열의 크기를 유동적으로 조절할 수 있는 배열. 메모리 상에서 배열의 원소들이 연속적으로 붙어 있다. 장점 : 인덱스를 통해서 빠르게 접근 가능 (Read가 쉽다). 배열의 크기 유동적으로 조절 가능 연결 리스트 : 원소들이 메모리 상에서 연속적으로 붙어 있지 않다. => 인덱스로 빠른..
-
[자료구조] 스택 (Stack)Algorithms & Data Structure 2022. 1. 13. 21:06
스택이란? 나중에 들어간 데이터를 가장 먼저 출력하는 구조이다. 쉽게 설명하자면, 뷔페에서 쌓아둔 접시들을 예시로 들 수 있다. 층층이 쌓인 접시들 중에서 가장 마지막으로 쌓은 접시를 손님들은 가장 먼저 가져간다. 스택에 무언가를 삽입하고자 했는데 이 스택이 이미 꽉 찬 상태여서 나타나는 에러를 Stack Buffer Overflow 스택 버퍼 오버플로우라고 한다. 개발자들의 빛과 희망과 같은 스택 오버플로우 웹사이트 이름도 여기에서 유래했다! 깔깔깔. 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 파이썬에서는 스택 자료형을 따로 지원하지는 않지만, 리스트로 만들 수 있다. 스택 : LIFO , FILO LIFO (Last-In-First-Out) : 나중에 들어간 것이 먼저 나온다. FIFO (Firs..
-
[백준] 5397 키로그백준 Online Judge 2021. 8. 25. 22:02
[백준] 5397 키로거 비밀번호 찾는 방법 두 개의 스택을 사용하면 쉽게 풀 수 있다 풀이 시간 최대 40분 test_case = int(input()) for _ in range(test_case): left_stack = [] right_stack = [] data = input() for i in data: # 지워야 할 때, 왼쪽 스택이 비웠는가 먼저 확인한 뒤 지운다. if i == '-': if left_stack: left_stack.pop() # 커서를 왼쪽으로 옮긴다 = 문자 하나를 오른쪽 스택으로 넘긴다. elif i == '': if right_stack: left_stack.append(right_stack.pop()) # 문자가 입력 된 경우 else: left_stack.app..