본문 바로가기

전체 글

(22)
알고리즘 복잡도 표현 기법 알고리즘 복잡도 표현 방법 1. 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양할 수 있음 정수의 절대값 구하기 1, -1 ->> 1 방법1: 정수값을 제곱한 값에 다시 루트를 씌우기 방법2: 정수가 음수인지 확인해서, 음수일 때만, -1을 곱하기 다양한 알고리즘 중 어느 알고리즘이 더 좋은지를 분석하기 위해, 복잡도를 정의하고 계산함 2. 알고리즘 복잡도 계산 항목 시간 복잡도: 알고리즘 실행 속도 공간 복잡도: 알고리즘이 사용하는 메모리 사이즈 가장 중요한 시간 복잡도를 꼭 이해하고 계산할 수 있어야 함 알고리즘 시간 복잡도의 주요 요소 반복문이 지배합니다. 생각해보기: 자동차로 서울에서 부산을 가기 위해, 다음과 같이 항목을 나누었을 때, 가장 총 시간에 영향을 많이 미칠 것..
링크드리스트(Linked List) 1. 링크드 리스트 (Linked List) 구조 연결 리스트라고도 함 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 본래 C언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원 링크드 리스트 기본 구조와 용어 노드(Node): 데이터 저장 단위 (데이터값, 포인터) 로 구성 포인터(pointer): 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 * 일반적인 링크드 리스트 형태 (출처: wikipedia, https://en.wikipedia.org/wiki/Linked_list) 2. 간단한 링크드 리스트 예 Node 구현 보통 파이썬..
메서드와 함수의 차이 파이썬에서는 각각의 object마다 특별한 속성 유무를 체크하는데 callable도 그 속성중 하나이다 callabel 속성이 있는 object는 뒤에 괄호를 여는 식으로 사용이 가능하다 예를들어 함수 print는 함수 object인데 callable이다. 사용자가 만든 클래스도 기본적으로callable이기 때문에 class A: ... A() print() 이런 방법으로 사용이 가능하다. 함수와 메서드의 공통점 기본적으로 둘 다 callable이고 내부적으로 local scope를 선언해서 코드를 가지고 있을 수 있다 def print() #code 처럼 들여쓰기해서 쓴 #code 를 내부적으로 가지고 있을 수 있다. 이러한 callable object를 호출하면 내부 코드부분을 실행한다. 함수와 메서..
스택(Stack) 꼭 알아둬야 할 자료 구조: 스택 (Stack) 데이터를 제한적으로 접근할 수 있는 구조 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 큐: FIFO 정책 스택: LIFO 정책 1. 스택 구조 스택은 LIFO(Last In, Fisrt Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름 LIFO: 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 FILO: 처음에 넣은 데이터를 가장 마지막에 추출하는 데이터 관리 정책 대표적인 스택의 활용 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 주요 기능 push(): 데이터를 스택에 넣기 pop(): 데이터를 스택에서 꺼내기 Visualgo 사이트에서 시연..
큐(QUEUE) 1. 큐 구조 줄을 서는 행위와 유사 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일 FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대 2. 알아둘 용어 Dequeue: 큐에서 데이터를 꺼내는 기능 Visualgo 사이트에서 시연해보며 이해하기 (enqueue/dequeue 클릭해보기): https://visualgo.net/en/list Linked List (Single, Doubly), Stack, Queue, Deque - VisuAlgo VisuAlgo is free of charge for Computer Science commun..
배열 1. 배열을 사용하는 이유 - 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 - 같은 종류의 데이터를 순차적으로 저장 예) 배열의 장점: - 데이터에 빠른 접근 가능 배열의 단점: - 추가/삭제가 어려움 (중간만 삭제하는 등) - 미리 최대 길이를 지정해야 함 (C언어) 예제 ) 파이썬에서 dataset 이라는 리스트가 있을 때 'M' 이 몇번 들어갔는지 빈도수 나타내기 m_count = 0 for data in dataset: for index in range(len(data)): if index == 'M': m_count +=1 print(m_count)