1. 알고리즘이란? 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 알고리즘(algorithm)은 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것이다. 넓게는 사람 손으로 해결하는 것, 컴퓨터로 해결하는 것, 수학적인
** 본 글은 파이썬 알고리즘 인터뷰(박상길 지음)를 기반으로 작성하였습니다. 파이썬에 대해서 먼저 알아보자. 내장 라이브러리와 자료구조, 알고리즘으로 최적의 문제풀이가 가능할 정도로 살펴볼 것이다. Numpy(넘파이)같은 과학 계산 모듈은 사실상 파이썬의 표준 라이
컴퓨터 과학에서 빅오는 입력값이 커질 때 알고리즘의 실행 시간(시간 복잡도)과 함께 공간 요구사항(공간 복잡도)이 어떻게 증가하는지를 분류하는 데 사용되며, 알고리즘의 효율성을 분석하는 데에도 매우 유용하게 활용된다. 빅오 > 빅오 (O, big-O)란 입력값이 무한대
문자열 조작이란 문자열을 변경하거나 분리하는 등의 여러 과정을 말한다. 대부분의 언어에서는 별도의 문자열 자료형과 문자열을 조작하기 위한 다양한 기능들을 기본적으로 제공하고 있기 때문에, 굳이 제약을 두지 않는 한, 언어에서 제공하는 기본 기능들을 잘 활용하는 편이 가
자료구조는 크게 메모리 공간 기반의 연속 방식과 포인터 기반의 연결 방식으로 나뉜다. 배열은 이 중에서 연속 방식의 가장 기본이 되는 자료형이다. (연결 방식의 가장 기본이 되는 자료형은 바로 다음 장에서 살펴보게 될 '연결 리스트'다.) 추상 자료형의 실제 구현 대부
연결 리스트는 컴퓨터과학에서 배열과 함께 가장 기본이 되는 대표적인 선형 자료구조 중 하나로 다양한 추상 자료형 구현의 기반이 된다. 동적으로 새로운 노드를 삽입하거나 삭제하기가 간편하며, 연결 구조를 통해 메모리를 연속적으로 사용하지 않아도 되기 때문에 관리도 쉽다
스택과 큐는 프로그래밍이라는 개념이 탄생할 때부터 사용된 가장 고전적인 자료구조 중 하나로, 그중에서도 스택은 거의 모든 애플리케이션을 만들 때 사용되는 자료구조다. 스택은 LIFO(Last In First Out- 후입 선출), 큐는 FIFO(First In Firs