기본적인 자료구조
Algorithm/Algorithm 개념2024. 1. 27. 00:18기본적인 자료구조

개요 자료구조(data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 집합을 의미하며 각 원소들 사이의 관계가 논리적으로 정의된 일정한 규칙에 의하여 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 조직적, 체계적으로 구분하여 표현한 것을 말한다. 자료구조가 필요한 이유 데이터를 효율적으로 저장, 관리하여 메모리를 효율적으로 사용하기 위해서이다. 적절한 자료구조의 사용은 메모리의 용량을 절약해주고, 실행시간을 단축시켜줄 수 있다. 자료구조의 선택 기준 작업의 효율성, 추상화, 재사용성을 증가시키기 위하여 상황에 따른 적절한 자료구조의 사용이 필요하다. 따라서, 아래의 사항을 구려하여 자료를 좀 더 효율적으로 처리할 수 있도록 한다. 자료의 처리시간 자료..

배열(array)과 연결 리스트(linked list)
Algorithm/Algorithm 개념2024. 1. 23. 09:41배열(array)과 연결 리스트(linked list)

개요 연결 리스트와 배열은 다른 자료구조를 구현할 때 기본이 되는 자료구조로 많이 사용이 되며 서로 비교되는 일이 많다. 스택, 큐, 덱과 같은 선형 자료구조들의 기본이 된다. 기초적인 단계의 자료구조들은 배열로 구현하기가 쉬워서 보통 배열로 많이 구현해보는데, 배열의 단점(후에 이야기 할 것이다.)으로 인해 이를 보완하고자 연결리스트를 사용하기도 한다. 둘 중 무엇을 사용하느냐는 자유지만, 둘의 특성을 잘 알아두고 상황에 맞게 응용하는 것이 가장 좋아보인다.▼ 배열(array) 배열이란? 배열(array)은 연관된 데이터를 하나의 변수에 그룹화 하여 관리하는 자료구조이다. 말이 조금 어려울 수 있는데, 다들 알다시피 같은 데이터 타입 변수들을 모아놓은 것이다. 좀 더 세부적이고 명확하게 설명을 하자면,..

정렬 - 거품 정렬부터 셀 정렬까지
Algorithm/Algorithm 개념2024. 1. 22. 18:46정렬 - 거품 정렬부터 셀 정렬까지

개론 정렬에는 여러가지 뜻이 있는데 대체로 "가지런히 줄지어 늘어섬. 또는 그렇게 함" 혹은 "영역, 항목, 데이터 따위를 미리 지정된 양식으로 맞추는 일." 등의 의미를 말한다. 어떻게 보면 우리가 정리하는 것과 같은 얘기를 하는 것이다. 우리가 현실 세계에서 책장을 정리한다고 했을 때 어떻게 정리하는가에 대해서 생각해보자.▼ 책의 개수가 많지 않고 책장에 들어갈 자리가 넉넉하게 있다면, 크게 뭔가를 생각하지 않고 노동요를 틀고 하나씩 책장에 넣을 것이다. 그러면 컴퓨터에게 책 정리 시뮬레이팅을 시킨다고 해보자.▼ 컴퓨터는 우리의 행동 하나하나를 전부 생각하고 있어야한다. "책을 빼서 어디에 놓지?" "책장의 전체 크기가 어느정도지?" "이 책이 저 책보다 우선순위가 높은걸까?" "이 책은 전체 책 중..

간단한 수학(+ 약간의 정수론)
Algorithm/Algorithm 개념2024. 1. 19. 17:29간단한 수학(+ 약간의 정수론)

개론 기하와 벡터, 행렬 식과 같은 수학이 아닌 중학생때 배웠던 기초적인 수학에 관한 알고리즘에 대한 설명이다. 정수론의 내용도 포함되어있다. (몇가지는 중학생때 제목만 들었던 거고 자세하게 배우지 않았던 것일 수도 있다.) 나머지 연산 모듈러 연산이라고도 하고 나머지 연산에 관한 다른 공식들이나 정리들은 이산수학에서 배울 수 있다. 더 자세한 것은 이산수학에서 모듈러 연산에 대해서 보기로 하고 이 글에서는 나머지 연산에 대한 간단하고 응용하기 좋은 공식 몇가지를 볼 것이다. 나머지 연산의 경우 답이 매우 커질 때, 어떤 수로 나눈 나머지를 답으로 요구하기도 한다. 그 외에도 원 순환을 구현할 때도 사용한다. 나머지 연산은 우리가 따로 나누고, 빼고 할 필요 없이 나머지 연산자라는 것이 있어 바로 구하는..

알고리즘과 입출력
Algorithm/Algorithm 개념2024. 1. 18. 22:01알고리즘과 입출력

시간 복잡도 Big - O 표기법 주어진 Input의 개수를 의미하는 n을 기반으로 명령어들의 연산이 몇 번이나 실행됐는지를 숫자로 표시하는 것이다. Big - O : function ranking Better O(1) - 상수 시간 : 문제를 해결하는데 오직 한 단계만 처리함. O(log(n)) - 로그 시간 : 문제를 해결하는데 필요한 단계들이 연산마다 특정 요인에 따라 줄어듬. O(n) - 직선적 시간 : 문제를 해결하기 위한 단계의 수와 입력 값 n이 1 : 1 관계를 가짐. O(nlog(n)) - 로그 직선적 시간 : 문제를 해결하기 위한 단계의 수가 n*log(n)번 만큼의 수행시간을 가짐 O(n^2) - 2차 시간 : 문제를 해결하기 위한 단계의 수는 입력 값 n의 제곱. O(n^3) - 3..

image