Study note 45

코딩 테스트에서 주의할 점

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! 테스트 케이스 바운더리, 0, 음수 이런 걸 고려해서 넣어보자. 가장 큰 수, 작은 수 등 음수만 있는 경우, 양수만 있는 경우, 섞여 있는 경우 등 고려하기. 두 가지 이상이 섞여있는 경우, A케이스만 있는 경우, B케이스만 있는 경우, 둘 다 섞여 있는 경우로 나눠서 고려하기. 런타임 에러 오버플로우 주의하기. 바운더리 값끼리 더한다든지, 뺀다든지 해서 바운더리를 넘어가지 않도록 구현해야한다. 없는데 접근 No Stack, vec..

정렬 알고리즘(Sort)

기술면접을 위해 기초 CS에 대한 복습중이다. 그 중 오늘은 정렬 알고리즘, Sorting에 관한 알고리즘에 대해 공부하고, 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! 버블 정렬(Bubble Sort) 시간 복잡도: 정렬이 되어있든 아니든 $O(n^{2})$이다. 공간 복잡도: 주어진 배열 안에서 swap만 하기 때문에 $O(n)$이다. 선택 정렬(Selection Sort) 기본 알고리즘 처리되지 않은 데이터를 linear search로 가장 작은 숫자를 찾는다. 그 처리되지 않은 데이터 중 가장 앞쪽에 있는 숫자와 s..

Vector 문법 정리 (C++)

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! Vector 기본 문법 // 크기는 3, 모든 값은 10000으로 초기화 vector v(3, 10000); // index 2에 10을 추가 v.insert(v.begin() + 2, 10); // 거꾸로 뒤집기 reverse(v.begin(), v.end()); 값 출력 방법 // 방법1: 배열처럼 접근해서 loop로 출력 for (int i = 0 ; i < vec.size(); i++) cout

Heap & priority_queue

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! Heap의 특징 최대/최소 원소를 빠르게 찾을 수 있다. Maxheap, Minheap이 있다. (큰 값이 맨 앞, 작은 값이 맨 앞) 연산 힙 구성 (Heapify): $O(NlogN)$ (N개를 insert하므로) 삽입 (Insert): $O(logN)$ (바이너리 트리 형태이므로) 삭제 (Remove): $O(logN)$ (바이너리 트리 형태이므로) 완전 이진트리라서 배열로 접근 가능 (메모리 효율이 높다) 응용 정렬: heap..

면접 대비 C++ 기초

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! 1. Pointer와 reference의 차이점 Pointer는 값을 바꿀 수 있지만 reference는 바꿀 수 없다. 그래서 pointer는 값을 increment/decrement할 수 있다. reference는 NULL을 참조할 수 없다. 2. 람다 (Lambda) Modern C++ 문법 [captures](parameters) -> return type {body} lambda를 function에 대입 가능 lambda를 ..

Study note/CS 2024.04.12

코딩 테스트에서 자주 쓰이는 기본 문법들

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! String 사용법 String 크기: s.length(); 혹은 s.size() String의 첫 문자: s.front(); String의 끝 문자: s.back(); String 찾기: s.find("aroma");라고 하면 aroma라는 단어가 나오기 시작하는 곳의 index를 반환 String 맨 뒤에 문자 추가하기: void push_back(char a); String 맨 뒤에 문자 삭제하기: s.pop_back(); St..

외국계 시험 대비 Summary

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! 1. C++ templetes templete void swap(T& a, T& b) { //... } T가 int든, string이든 어느 타입이든 다 될 수 있다. generic programming의 특징을 구현할 수 있게 하는 게 templete이다. 2. Dynamic allocation int *array = new int[length]; // ... delete[] array; 3. Class access control ..

Study note/CS 2024.04.12

DS - Data Structure

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! Stack & Queue Stack 2개로 Queue 구현하는 방법 enqueue용 stack, dequeue용 stack을 만들어서 구현한다. enqueue: 1st stack에 push dequeue: 1st stack에서 pop 후 2nd stack에 push, 이걸 반복한다. 주의할 점은 2nd stack이 완전히 비었을 때에만 1st stack의 첫 번째 값이 들어올 수 있다. Stack의 활용 시스템 스택 (프로그램 간의 ..

Study note/CS 2024.04.12

객체지향 프로그래밍 OOP

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 &#39;다른 사람&#39;이 공부하기에는 도움이 되지 않을 수 있으니 주의! OOP 장점: 재사용성, 생산성↑, 유지보수 용이, 디버깅 용이, 대형 프로젝트 함에 있어 분담 용이 5가지 키워드: 클래스&객체, 추상화, 캡슐화, 상속, 다형성 추상화: 공통의 속성이나 기능을 묶어 이름을 붙이는 것. Class 정의 다형성: 오버라이딩, 오버로딩(매개 변수 수나 타입을 달리하는 것) 객체지향 설계원칙(SOLID) Single Responsible Principle: 단일 책임 원칙. 클래스의 단 하..

Study note/CS 2024.04.12

디자인 패턴 2

기술면접을 위해 기초 CS에 대한 복습중이다. 공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다. 내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의! Facade 패턴 여러 객체를 만들고 작업하는 것을 facade(외벽)으로 감싸서 사용하는 방식 Templet-method 패턴 세부방식을 다양화하기 위함 Strategy와 다른 점: Overriding. 추상클래스의 method 절차는 바꿀 수 없음. 같은 method 절차를 따르는데 그 안 내용이 다름. 공통된 절차가 있을 때 Decorator 패턴 여러 옵션들을 필요에 따라 장착할 수 있게 하는 방식 abstract에서 상속 받..

Study note/CS 2024.04.12