728x90

프로그래밍 이야기 43

A Tour of C++ : 9장 문자열과 정규 표현식

. 9. 문자열과 정규 표현식 9.1 소개 C++ 표준 라이브러리 std::string 타입. string_view 타입을 이용하면 string, char[] 상관없이 문자열 시퀀스 조작 가능. 정규표현식 제공. ​ ​ 9.2 문자열 string 타입의 활용. s1 = s1 + ‘\n’; s2 += ‘\n’; ​ string name = “Niels Stroustrup’; ​ string s = name.substr(6,10); // s = “Stroustrup”; name.replace(0, 5, “nicholas”); // name = “nicholas Stroustrup”; name[0] = toupper(name[0]); // name = “Nicholas Stroustrup”; ​ if ( na..

[책] 코딩인터뷰 퀘스천, 내용 정리 모음

. 좋은 책이고 광범위하고 어려운 책이었습니다. 가볍게 기본기 연습삼아 읽어보자 하고 시작했는데 생각보다 내용이 깊고 넓고 어려운 내용들이 많았습니다. 기본기를 잡기에도 부족함이 없어보이는 책입니다. 그도 그럴 것이, 책 초반의 저자의 말에서 이런 구절이 나옵니다. ​ "이 책의 내용은 필요한 모든 주제를 자세하게 다루고 있다" "이 책을 읽고 전부 이해했다면 면접에 도전해도 된다고 확신한다. 이 책은 대학 공학 학사, 석사 준비하는 학생들에게도 매우 유용하다" ​ 프로그래밍 관련 학사/석사 수준의 내용들을 다루고 있다고 하니, 어려워도 이상할 게 없어보입니다. 아무튼 매우 좋은 책이고 나중에 한번은 더 읽어보고 내용을 이해해보려 노력해봐야겠다는 생각도 들게 합니다. 코딩인터뷰 퀘스천"메모" 프로그래밍 ..

A Tour of C++ : 8장 라이브러리의 개요

. 8. 라이브러리의 개요 ​ 8.1 소개 string, ostream, variant, vector, map, path, unique_ptr, thread, regex, complex 등의 표준 라이브러리 타입 간략히 설명. ​ 8.2 표준 라이브러리 구성 요소 - 메모리 할당, 실행 시간 타입 정보, C 표준 라이브러리 - 국제 문자 세트 지원, 지역화, 부분 문자열 읽기 전용 뷰 등의 문자열. (9.2) - 정규 표현식 매칭 지원. (9.4) - I/O 스트림. - vector, map 등의 컨테이너, find(), sort(), merge() 등의 알고리즘 프레임워크. (STL) - 표준 수학 함수, 복소수, 산술 연산 벡터, 난수 생성기 등의 수치 계산 지원 - thread, lock 등 동시성..

A Tour of C++ : 7장 컨셉과 제네릭 프로그래밍

. . 7. 컨셉과 제네릭 프로그래밍 7.1 소개 템플릿의 기능 - 타입을 정보의 손실 없이 인자로 전달. 인라인을 활용할 기회 커짐 - 인스턴스화 시점에 여러 경우에 따라 정보를 달리함으로 최적화 - 상수 값을 인자로 전달, 컴파일 시간 계산 수행 가능. ​ 컴파일 시간에 계산과 타입 조작 메커니즘 제공, 코드를 명료하고 효율적으로 만듬. 타입(클래스)은 코드와 값을 모두 포함할 수 있다는 것이 중요. ​ 가장 우선적/일반적 사용 목적은 제네릭 프로그래밍 지원. “일반적”인 알고리즘 설계, 구현에 집중. ​ 7.2 컨셉(C++20) 어떤 템플릿 함수의 첫 템플릿 인자가 시퀀스의 한 종류이고, 두 번째 템플릿 인자가 수의 한 종류인 경우. 이런 요구 사항을 컨셉(concept)이라 함. ​ 7.2.1 컨..

A Tour of C++ : 6장 템플릿

. . 책 읽으면서 정리한 메모 6. 템플릿 파라미터화된 타입 : 제한된 템플릿 인자, 값 템플릿 인자, 템플릿 인자 추론 파라미터화된 연산 : 함수 템플릿, 함수 객체, 람다 표현식 템플릿 메커니즘 : 가변 템플릿, 별칭, 컴파일 시간 if ​ 6.1 소개 템플릿은 타입이나 값의 집합을 파라미터화한 클래스나 함수. ​ 6.2 파라미터화된 타입 template 는 template 와 동일. “모든 타입 T에 대해”라는 C++ 표현. ​ template class Vector { // ... } ​ Vector vc(200); // 문자 200개를 포함하는 벡터 Vector vs(17); // 문자열 17개 Vector vli(45); // 정수의 리스트 45개 ​ 템플릿+인자 = 인스턴스화 or 특수화 ..

A Tour of C++ : 5장 필수적인 연산

. . 책 읽으면서 정리한 메모 5. 필수적인 연산 소개 : 필수적인 연산, 변환, 멤버 초기화 복사와 이동 : 컨테이너 복사, 컨테이너 이동 자원 관리 관례적인 연산 : 비교, 컨테이너 연산, 입력과 출력 연산, 사용자 정의 리터럴, swap(), hash ​ 5.1 소개 == 와 >, second 12.7i -> imaginary. 12.7i+47 = complex. (47,12.7) ​ 5.4.5 swap() 두 객체의 값을 뒤바꾸는 swap() 함수. 굉장히 빠르고 예외를 던지지 않는다고 가정. tmp=a, a=b, b=tmp 로 정의. ​ 5.4.6 hash 표준 라이브러리 unordered_map 해시테이블. ​ 5.6 조언 [3] 필수 연산자를 정의할 거면 모두 하거나, 아무것도 하지 않거나..

코딩인터뷰 퀘스천"메모+후기" 디자인(설계), 마무리

. . 책 읽으면서 메모했던 내용들 옮겨봅니다. ​ - 챕터21 디자인(설계) 디자인 패턴 - 특정 종류의 문제를 해결하기 위함 - 문제를 이해하고 사용할 패턴을 좁힘. - 서로 다른 패턴들 사이의 관계성 찾고, 안정적으로 사용할 패턴들과 변경 사항들 결정. ​ 리팩토링 외부동작 변경 없이 내부 구조 변경. - 여러 디자인패턴 공부로는 좋은 설계자가 되는데 불충분. - 패턴들을 이해하고 장점을 더 활용할 수 있어야 좀 더 이해하기 쉽고 수정하기 편하도록 소프트웨어 내부 구조를 변경. ​ 패턴 - 생성 패턴 : 객체의 생성을 다룸 Factory, Abstract Factory, Builder, Prototype, Singleton - 구조 패턴 : 클래스들이 커다란 구조를 형성하기 위해 결합될 수 있는 방..

코딩인터뷰 퀘스천"메모" 탐욕,분할정복 알고리즘, 동적 계획법, 복잡도 클래스

. . 책 읽으면서 메모했던 내용들 옮겨봅니다. ​ - 챕터17 탐욕 알고리즘 체스 게임에서 의사 결정은 향후의 수에 대해서도 고려. 반면 테니스는 그 순간 최선이라고 생각하는 현재 상태를 기반으로 행동. Greedy Strategy 는 테니스에 적합. ​ 직관적이고 간단하며 이해하기 쉽고 코드화가 용이함. 지역적 최선이 전체 문제의 해라는 보장이 없다. ​ 응용 : 선택정렬, 위상정렬. 힙 정렬. 허프만 부호화 압축 알고리즘. 동전 교환 문제. 환전. 작업 스케쥴 알고리즘. ​ 챕터18 분할 정복 알고리즘 탐욕 전략으로 해결되지 않는 문제들 주 몇몇은 Divide & Conquer 로 해결 가능. 재귀 기반, 문제를 직접 해결할 수 있을 정도로 간단한 문제가 될 때까지 동일한 유형인 둘 이상의 하위 문..

코딩인터뷰 퀘스천"메모" 검색,해싱,문자열 알고리즘

. . 책 읽으면서 메모했던 내용들 옮겨봅니다. ​ - 챕터11 검색 불규칙 선형 검색 : 정렬되지 않아 순서를 모르는 배열. 최악의 경우 모든 요소 검사 O(n) 정렬/규칙 선형 검색 : 정렬된 배열에서 검색. O(n) 이진 검색 : 사전 검색처럼. 인접한 방향으로 추적. O(logn) 심볼 테이블 그리고 해싱 : 13장 심볼 테이블, 해싱 챕터 참조. 문자 검색 알고리즘 : 15장 문자열 알고리즘 챕터 참조. ​ 챕터14 해싱 시간 복잡도 O(1) 로 만들기 위해. 해싱 구성 요소 - 해시 테이블 (Hash Table) - 해시 함수 (Hash Functions) : 해시값 충돌 최소화/균일분포, 쉽고 빠른 연산, 모든 키의 정보로 해싱 적재 인수(Load Factor) : 저장데이터 수 / 해시테이..

코딩인터뷰 퀘스천"메모" 그래프 알고리즘, 정렬

. . 책 읽으면서 메모했던 내용들 옮겨봅니다. ​ - ​ 챕터9 그래프 알고리즘 서울에서 뉴욕까지 가는 가장 빠른 노선은? 같이 객체간의 관계에 대한 정보 자료구조가 그래프. 정점 노드들의 집합 V와 간선(정점의 쌍)들의 집합 E를 사용하여 (V, E)로 나타냄. Directed Edge : 방향성을 가지는 간선 Undirected Edge : 방향을 가지지 않은 간선 Directed Graph Undirected Graph ​ 그래프 어플리케이션 전자 회로 컴포넌트간 관계 표현, 운송 네트워크, 컴퓨터 네트워크, 데이터베이스 ​ 챕터10 정렬 정렬 알고리즘의 분류 기준 비교 횟수(최선은 O(nlogn), 최악은 O(n^2) 복잡도) 도치(값 교환) 횟수, 메모리 사용, 반복, 안정성, 작용성 ​ 비교..

728x90
반응형