728x90

프로그래머 23

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) 복잡도) 도치(값 교환) 횟수, 메모리 사용, 반복, 안정성, 작용성 ​ 비교..

코딩인터뷰 퀘스천"메모" 프로그래밍 기초, 알고리즘, 연결 리스트, 스택

. . 책 읽으면서 메모했던 내용들 옮겨봅니다. 챕터1 프로그래밍 기초 / 12, 13 프로그래밍 테크닉, 기초 문제 -네임 맹글링(Name mangling) C컴파일러는 언더바’_’ 를 붙여 함수나 심볼을 연결. main() 함수는 _main() 심볼명, int counter; 는 _counter 심볼명에 링크. C++ 컴파일러는 함수 오버로딩 메커니즘. 단순 언더바를 붙이지 않고, 링커가 ‘맹글링’을 사용. 네임 맹글링 : C++ 컴파일러가 동일한 이름의 함수, 변수들을 라인 식별자, 인자 크기 등의 확장 정보들을 가진 어떤 명칭(유일 심볼명)으로 변경, 연결하기 위한 메커니즘. ​ 함수명 맹글링 : @ 변수명 맹글링 : @@ ex) int Test(int a, int b) => _1add@8 ex)..

[책] 코딩인터뷰 퀘스천 (2015출간)

. . 정식으로 퇴사한지 1주일 정도 넘었습니다. 회사다닐 때보다 더 여러가지 바쁘게 하고 있는 탓인지 시간이 정말 빠르게 흘러가네요. 벌써 10월 중순이라니. ​ 너무 멀지 않은 미래에 구직활동겸 인터뷰 준비도 다시 해야하고, 이번 기회에 기본기에 대한 것들도 한 번 공부해보자는 생각에 코딩인터뷰 책도 한 권 보기 시작했습니다. 사실 원래 보려고 했던 2017년 출간된 다른 서적을 구하지못해서 구하기 전까지 훑어보자는 생각으로 구해온 책입니다. ​ 책의 저자는 아마존 수석 개발자, 하이데라바드의 Microsoft, IBM 연구소 등에서 근무한 경력이 있고 컴퓨터 과학 석사까지 마친 엘리트 느낌의 개발자입니다. ​ 책의 구성은 마치, 정보처리 계통의 자격증 시험 교과서같은 느낌입니다. 그만큼 정보처리 기..

A Tour of C++ : 4장 클래스

. . 4. 클래스 ​ 4.1 소개 4~7 장은 C++의 추상화 지원, 자원 관리 훑어봄 - 4장 : 새로운 타입(사용자 정의 타입) 정의하고 사용방법 가볍게. 구체 클래스(Concrete class), 추상 클래스(abstract classes), 클래스 계층 구조(class hierarchies) 기본 속성, 구현 기법, 언어 기능 - 5장 : 생성자, 소멸자, 대입 연산 등. C++ 특별한 의미 연산자 설명. 객체의 생애 주기와 자원관리 지원 방법. - 6장 : 타입 파라미터화, 타입 알고리즘 파라미터화= 템플릿(template). 템플릿 함수, 함수 객체로 일반화 - 7장 : 제네릭 프로그래밍 개념, 기법, 언어 기능.템플릿 인터페이스 표현, 설계 가이드 컨셉 정의, 사용 방법. 일반적이고 유연한..

A Tour of C++ : 3장 모듈화

. . 3. 모듈화 3.1 소개 C++ 프로그램은 독립적으로 개발된 여러 부분으로 구성. 함수, 사용자 정의 타입, 클래스 계층 구조, 템플릿 등. 핵심 = 구송 요소들의 상호작용을 명확하게 정의하는 것. 첫 단계 = 인터페이스와 구현을 분리 ​ 3.2 분할 컴파일 사용할 타입과 함수의 선 : 사용할 타입과 함수의 정의 각각 분리된 파일에 존재, 따로 컴파일할 수 있어 프로그램을 반독립적(semiindependent) 코드 조각 집할들로 조직화. 이런 분리는 컴파일 시간 최소화, 논리적 구분/분리를 강제 (에러 소지도 줄어듬) 분할 컴파일된 코드 조각을 흔히 라이브러리라고 부르기도 ​ vector.h vector.cpp, user.cpp ​ vector.h의 정의와 인터페이스는 공유하지만, 두 cpp 파..

728x90
반응형