구현 4

[C/C++] atoi 구현 / 문자열을 숫자로

atoi 구현 / 문자열을 숫자로 atoi 기본 개념 및 구조 #include 에 내장된 함수인 atoi는 문자열을 숫자로 바꿔주는 함수이다. atoi의 구조는 아래와 같다. 1. 문자열의 초반에 오는 공백 문자(white-space characters)는 무시한다. - whitespace : \t, \v, \n, \f, \r, ' ' - 아스키코드로는 9부터 13까지, ' '는 32 - man isspace 명령어를 사용해보자(리눅스 한정) 2. 부호(+, -)는 최대 한 개까지만 올 수 있다. - 만일, 두 개 이상이라면 0이 반환된다. - 부호가 없다면 기본 양수이다. 3. 숫자를 한번 읽기 시작한다면 다른 문자가 오기 직전까지만 읽는다. - ex) 1234 → 1234 - ex) 12a34 → 1..

[탐색] 이분 탐색 Binary Search

이분 탐색 Binary Search 이분 탐색의 개념과 특징 이분 탐색(혹은 이진 탐색)은 이미 정렬된 배열에 대해 log₂N의 평균 검색 길이를 갖는 매우 빠르고 간단한 알고리즘이다. 기본 알고리즘 구간에 대해 중간값을 우선 검사한다. 중간값보다 작다면 찾는 값은 왼쪽 구간에 있다. (right = mid-1) 중간값보다 크다면 찾는 값은 오른쪽 구간에 있다. (left = mid+1) 중간값과 같다면 종료 구간을 줄여가며 1~3을 반복한다. 예제 정렬된 배열에 대해 목표값 9를 찾고자 한다. Search 1. left = 0(인덱스 위치) right = 8 mid = (0+8)/2 = 4 >>7(중간값)은 목표값 보다 작으므로 구간을 오른쪽으로 옮긴다. >>left = mid + 1 Search 2...

[정렬] 선택 정렬 Selection Sort

선택 정렬 Selection Sort 선택 정렬이란? 최소 혹은 최댓값부터 찾아 정렬하는 방법 다른 정렬들에 비해 비교적 쉽게 구현이 가능하다. (오름차순일 때) 첫 인덱스부터 정렬하는 방법으로 기준으로부터 오른쪽 값들과 비교하여 가장 작은 수를 찾아 값을 교환한다. -핵심코드 1) A와 B의 값을 교환 tmp = A; A = B; B = tmp; 2) for문의 범위 설정 for( i=0; i < SIZE -1; i++){ for( j=i+1 < SIZE; j++){ ... } } 바깥 for 문 현재 기준 인덱스를 가리키는 역할 범위는 SIZE-1까지(SIZE-1까지 정렬하면 마지막은 정해지기 때문) 내부 for 문 최소(혹은 최대) 값을 찾는 역할 범위는 기준+1부터 SIZE까지 정렬 예시 선택 정..

알고리즘/정렬 2020.07.22

[자료구조] 스택 Stack

스택 Stack 스택이란? 스택이나 큐, 트리와 같은 자료구조는 자신이 행위적 측면을 포함하는 자료구조이다. 이런 자료 구조는 제한된 접근 방식을 규정하고 있으며 이를 추상적 자료 구조(Abstrct Data Structure)라고 한다. 스택은 제일 나중에 들어간 것이 제일 먼저 나오는 LIFO(Last In First Out) 구조로 배열이나 연결 리스트(Linked List)로 구현할 수 있다. 배열로 구현하기는 쉽지만 처음에 스택의 크기를 지정해줘야 한다는 단점이 있고, 연결 리스트는 크기를 동적으로 할당하기 때문에 용량에 대해서는 제한(최대 메모리까지)이 없지만 구현하기는 비교적 어렵다는 단점이 있다. 스택의 구성 스택은 기본적으로 데이터를 삽입할 수 있는 push와 스택에서 데이터 하나를 빼내..