본문 바로가기
728x90

👨‍🏫Study/C++14

[C++] 병합(Merge Sort) 병합정렬 시간복잡도: 평균 = O(nlog(n)) 병합정렬은 분할정복 개념을 알고있어야 구현가능합니다. 어떠한 문제를 잘게 쪼게어 다시 조합하는 방식의 문제 해결 방법입니다. 분할정복은 보통 재귀 호출을 이용하여 구현합니다. 처음 정렬할 요소들을 쪼게고 해당 단계에서는 이동연산과 비교연산을 하지 않습니다. *계속 둘로 쪼갠 횟수만큼 n번만큼 반복 #include #include using namespace std; int S[100001]; void merge(int low, int mid, int high) { vectoru; int i = low; int j = mid + 1; while (i 2021. 9. 24.
[C++] string 라이브러리 정리 String 라이브러리 라이브러리 선언 #include size() size() 함수는 해당 문장열의 사이즈 반환 #include #include using namespace std; int main(){ string s = "Test"; cout 2021. 9. 24.
[C++] set 라이브러리 Set 저장 데이터의 값이 유일한 자료구조(중복허용x) 노드 기반 컨테이너 임의 접근 불가능 균형 이진 트리로 구현 각 노드는 pair 구성 *multset은 첫 번째 조건인 중복허용을 가능하게 만든 set의 형태의 자료구조입니다. 라이브러리 include 및 선언 #include //set set 명; set s; 맴버함수 *일반 함수의 형태에 iterator를 파라미터로 사용하는 것보다 맴버함수를 직접사용하는 것이 효율적이다. set s; s.insert(12);// 원소 삽입 s.find(key);// key 값에 해당하는 원소를 찾아 반복자 반환 s.lower_bound(key);// key 값에 해당하는 원소가 시작되는 주소를 가리키는 반복자 반환 // 시간복잡도 O(log(N)) lower_b.. 2021. 8. 22.
[C++] 10 - 클래스(Class) class 만드는 법 1) class name{ }; 2) private:, public: 영역 분할 3) member data 만들기 in private: 4) method 만들기 in public: 5) 초기화 함수(constructor, 생성자) - 생성자 이름은 class 이름과 동일->public - 만약 내가 생성를 만들지 않으면, default 생성자(Point(){})가 자동으로 생성 - 만약 내가 생성자를 만들면, default 생성자 자동 생성 안됨 - 장점 초기값과 형식을 지정할 수 있다. - default arguement 사용하면 default 생성자 굳이 필요 x class Point {//클라스 이름 설정 //2가지로 구성 -> 데이터와 함수 private: // 외부(main.. 2021. 8. 11.
[C++] 09 - 배열, 다차원 벡터, 문자열 배열 정적 배열(static array): 프로그램 동작중(run-time) 크기가 고정 동적 배열(daynamic array): 프로그램이 동작중 할당/해제 가능 - keywords: new (할당), delete[] (할당 해제) void get_data(int* begin, int* end) { for (int* curr = begin; curr != end; curr++)//다음변수가 저장된 공간으로 이동 저장된 변수자료형 크기만큼 이동 cin >> *curr;//주소값이 저장된 곳으로 jump! } void print(int* begin, int* end) { for (int* curr = begin; curr != end; curr++) cout 동적배열의 할당을 해제하겠다. // delete.. 2021. 8. 6.
[C++] 08 - 포인터, 벡터 활용 예시 벡터 for문 출력과 포인터를 활용한 출력 비교 //소수 1과 자기자신을 제외하고는 약수가 없는. 1보다 큰 정수 bool is_prime(int n) { if (n high; vector vec = primes(low, high);//모든원소가 같은 자료형을 갖는다. print(vec); return 0; } 2차원 벡터 포인터를 활용한 출력 //using Matrix = vector; //void print(co.. 2021. 8. 6.
[C++] 07 - 참조(reference), 포인터(Pointer) 변수 '*', '&' 기호들의 의미 &x: x의 주소값을 반환 int* px: (int*)는 정수형 변수의 메모리 주소값을 저장하는 data type (px는 주소값을 저장하는 변수) -> 포인터형 변수(주소값을 저장하는 변수) *px: px에 저장된 주소값으로 jump int main() { int x = 10; int* px = &x;//px라는 포인터형 변수에 x의 주소값을 할당 cout 2021. 8. 5.
[C++] 06 - 파일 입출력 활용 include된 라이브러리 #include //cin, cout #include //ofstream, ifstream, fstream #include //setw using namespace std; 파일 입출력, fin, fout int main() { char ch; ofstream fout; fout.open("char.txt"); //project8.exe while (true) { cin >> ch; if (ch == 'q') break; fout.put(ch); } fout.close(); ifstream fin; fin.open("char.txt");//파일 이름은 대소문자 구분x if (!fin) { cout = 60) grade = 'D'; else grade = 'F'; } void w.. 2021. 8. 5.
[C++] 05 - 파일 입출력(fstream, ifstream, ofstream) 정리 | ifstream | ofstream --------------------+--------------+--------------------------------------- char | fin.get(c) | f.put(c) (문자하나) word(공백/줄바꿈) | fin >> s | fout 2021. 8. 4.
728x90