목록전체 글 (21)
pugnet
파이썬에서 입력을 받을때는 보통 input()을 사용한다. 하지만, 알고리즘 문제를 풀면서 더 빠르게 입력을 받을 수 있는 파이썬의 표준 라이브러리가 있어서 찾아봤다. input() 사용법 num = int(input()) input()은 parameter로 prompt message를 받기 때문에 입력 받기 전에 prompt message를 출력해야한다. 또한, rstrip()을 실행해서 입력 받은 문자열의 개행문자를 삭제한 후 반환한다. 반면에 sys.stdin.readline()은 prompt message를 parameter로 받지 않고, 입력 받은 개행문자를 그대로 반환한다. input()은 위와 같은 작업들을 진행하기때문에 sys.stdin.readline()의 속도가 더 빠르다. sys.st..
큐(Queue)는 무엇인가? 큐의 사전적 의미는 일렬로 늘어선 사람들로 이루어진 줄을 말한다. 의미 그대로 차례대로 먼저 집어 넣은 데이터가 먼저 나오는 선형 자료구조이다. 큐의 특징 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO: First In First Out) 형태. 삽입(Insert)과 삭제(Delete) 연산은 각각 다른 곳에서 이루어진다. 먼저 들어간 데이터가 삭제(Delete)되는 연산은 디큐(Dequeue)라고 하며 연산이 일어나는 곳을 front라고 한다. 데이터를 삽입(Insert)하는 연산을 인큐(Enqueue)라고 하며 연산이 이루어 지는곳을 rear라고 한다. 큐의 사용 사례 은행에 가면 번호표를 받은 순서대로 업무를 보는 경우. 너비 우선 탐색(BFS) 구현. 프린트 출력..
스택(Stack)이란? Stack의 사전적인 의미는 쌓다이다. 말 그대로 데이터를 쌓아 올린 형태의 자료구조이다. 예를 들면, 주방에 같은 모양의 접시들을 아래부터 차곡차곡 쌓아 두고, 가장 위에 있는 접시부터 꺼내어 사용하는 것과 같다. 가장 마지막에 들어간 데이터를 가장 먼저 빼내는 형태로 후입선출(LIFO : Last In First Out)의 특징을 가지고있다. 스택의 특징 맨 위에 있는 가장 마지막에 들어온 데이터에만 접근이 가능하다. 따라서 맨 위에서만 데이터를 삽입(push)할 수 있고, 맨 위의 데이터만 삭제(pop)할 수 있다. 이때, 맨 위의 원소를 top이라고 하고 가장 아래에 있는 시작부분을 bottom이라고 한다. 스택의 활용 백스페이스 : 최근 입력 데이터 지우기. ctrl+z ..
연결리스트(Linked List)란? 데이터와 포인터를 가지고 있는노드 객체가 선형으로 연결되어 있는 자료구조. 여기서 노드가 가지고 있는 포인터는 바로 앞이나 바로 뒤의 노드를 가리킨다. 연결리스트의 장단점 연결리스트를 사용하면 중간 지점에서도 자료의 삽입과 삭제가 용이하지만, 배열의 index처럼 특정 데이터에 바로 접근이 불가능 하여 데이터에 접근하는 시간이 오래 걸린다는 단점이 있다. 연결리스트의 종류 단일 연결 리스트 : 각 노드는 자료 필드와 다음 노드를 가리키는 넥스트 포인터 필드를 가지고 있다. 이중 연결 리스트 : 단일 연결 리스트와 유사하지만, 각각 앞의 노드와 뒤의 노드를 가리키는 두개의 포인터 필드를 가지고 있다. 원형 연결 리스트 : 일반 연결 리스트에 마지막 노드의 포인터가 가장..