본문 바로가기

삼성전자 알고리즘

(65)
분수 계산 분수의 크기를 비교 할 때 ex) a/b와 c/d의 크기를 구할 때 로 나타낼 수 있다. b*d의 부호는 양수이므로 분자 a*d - b*c가 양수인지 0인지 음수인지만 판단하면 된다. 컴퓨터에서 정수처리가 가능하다면 실수 처리를 피하는 것이 좋다. 실수 연산의 결과는 완전히 신뢰할 수 없기 때문이다.
static과 extern 변수 main.cpp와 sub.cpp 파일이 있을 때, main에서 선언한 전역변수(int global_var)가 있을 때 int global_var; void main() { global_var = 1; printf("%d \n", global_var); } 에서 선언한 전역 변수를 다른 파일의 코드에서 사용하려면 아래와 같이 하면 됨. int global_val; int sub() { global_val = 1 printf("[sub]%d \n", global_var);; } 주의) extern 키워드를 main.cpp에서 안쓰고 sub.cpp에서 선언해도 되지만 둘 다 extern 을 붙이면 빌드 에러가 날 수 있음. satatic 키워드를 전역 변수에 쓰면 그 전역 변수는 해당 파일에서만 전역 변수로 ..
동적할당
12. 배열 Array 고정 배열(fixed array) vs 동적 배열 (dynamic array) 출처 : https://boycoding.tistory.com/194 배열의 모든 요소를 0으로 초기화 하는 방법 : int arr[5] = {}; int brr[5] = {0}; 인덱스의 명칭 : enum의 사용 #include using namespace std; enum StudentNames { Kim, //0 Lee, //1 Park, //2 Choi, //3 MAX_STUDENTS //4 }; int main(){ int scores[MAX_STUDENTS]; scores[Kim] = 100; cout
11. B트리 / B+트리 / B*트리 출처 : https://m.blog.naver.com/eng_jisikin/220889188747 1. B트리 사용 이유 : 검색에 유용하기 때문에 사용 2. Balanced Tree의 종류 : AVL 트리, 2-3 트리, 2-3-4 트리, Red-Black 트리, B 트리 3. 한 노드에 최대 들어갈 수 있는 데이터 수를 차수라 하고 비트리의 늘어날 수 있는 다리를 Order 라고 함. (Order는 데이터 수 +1 개) 4. 예제 : 5. M=짝수일 때, 홀수일 때 알고리즘이 다름
18. 스레드 출처 : https://jjeongil.tistory.com/153 1. 하나의 프로그램이 마치 동시에 여러 개의 동작을 하는 것과 같은 효과를 표현하기 위해 운영체제에 도입된 개념. 2. OS에서 각각 제공해주던 기능이 C++11 부터 표준으로 채택. #include #include using namespace std; //스레드에 의해 호출되는 함수 void CallThread(int t_id) { cout
10. 트리 세그먼트 트리 : 인덱스 구간의 합을 노드에 저장. 리프 노드에는 각 데이터가 저장되어 있음. #include #define NUM_DATA 5 #define MAX_TREE (1
9. 스택 링크드 리스트를 활용하여 스택 구현하기 : 링크드 리스트를 이용하면 배열로 구현할 때 보다 메모리 제약에서 자유로움. typedef struct _node { int data; struct _node* prev; }Node; 우선 데이터와 이전 노드를 가리킬 포인터를 구조체 변수로 갖는 Node 변수를 만든다. typedef struct _stack { Node* top; int size = 0; }Stack; Stack 구조체는 pop()과 push()가 실행될 때 사용할 top 포인터와 스택의 길이를 나타내는 사이즈 변수를 갖는다. 메인에서 스택을 선언한다. int main() { Stack st; //스택 생성 push(&st, 1) push(&st, 2) push(&st, 3) pop(&st); ..