본문 바로가기

c++/Study

(10)
다익스트라(Dijkstra) 알고리즘 간단 정리 1. 필요한 변수, 배열 1) 노드간 관계도 map 2) 각 노드로의 최단거리를 저장할 배열 : result[] 3) 알고리즘용 queue( priority_queue 가 아니여도 되네....?) -> 아마 동작 시간을 고려해서 pq를 쓰는거 같긴한데... 애매하네 4) 최종 결과 : result[목적지 노드] 2. 기본 동작 코드 : 무조건 queue로만, 배열을 사용하면서 할 필요성이 0 1) 각 노드의 최단거리를 MAX로 초기화 시켜놓기 2) 시작지를 queue에 넣음으로써 루프 시작, BFS랑 유사 3) for문으로 나랑 연결되어 있는 노드들의 최단거리를 모두 업데이트 -> 기존의 그 노드로 가는 최단길이 vs 지금 내 위치를 거쳐서 그 노드로 가는 길이를 비교하여, 최솟값으로 초기화 4) 위에 ..
c++ StringStream 사용법 생각보다 심플하고, 아주아주 유용할거같다 기능 : 띄어쓰기, \n 줄바꿈 이 두개를 구분하게 해주는 아주 유용한 함수~~ 1) 해더에는 sstream 2) 필요한 인풋들 - 나누고 싶은 string - 나눠진걸 결과에 담을 string 배열 - 옮겨담기용 string 하나, int index 하나 #include #include #include using namespace std; int main() { string a = " gfd qwe asdd sdf sdf"; stringstream ss(a); string result[5]; string token; int index = 0; while (ss >> token) result[index++] = token; for (int i = 0; i < 5;..
이분 탐색 나중에 기억하기 쉽게 최대한 심플하게 정리 1. 먼저 가능한 answer의 범위의 최대값과 최소값을 구한다. -> min, max 2. start 와 end를 초기화 + mid도 초기화 -> 당연히 처음에는 start = min, end = max -> mid = (min+max)/2 3. while문을 사용, 루프 조건은 while( start target : end = mid - 1 사용 예제 프로그래머스 입국 심사 https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. ..
알고리즘 1. find string.find(찾는 거) 있다면 -> 찾는 문자열의 시작 지점 없다면 -> -1 리턴 2. unordered map 1) [ ] -> 맵에서 key를 통햇 value를 지정하는 operator map[key] = value 2) find( key ) -> key값에 해당하는거 찾기 3) insert( {key,value} ) 4) 탐색방법 key : first value : second 3. sort(배열.begin(), 배열.end(),cmp) - cmp에 bool로 sort 방식 지정 가능 - 가장 기본은 > : 내림 차순 < : 오름 차순 4. 주로 모든 작업을 들어온 순서랑은 무관하게 효율적으로 처리? 이런거면 작업의 index를 하나를 추가적으로 관리하는게 효율적이다. 5...
상속 1. child는 mother class에 구현되어 있는 함수랑 동일한 이름의 함수 선언 가능 2. protected -> 자식은 이 변수 접근 가능! -> private 써서 자식이 부모꺼 접근하려면, 그냥 setValue 등등 사용 : 안 헷갈리게 Mother::setValue() -> 이렇게 하는거 추천 this->setValue()도 가능 3. child class가 생성될떄는 mother의 생성자 같이 호출한다. -> 그래서 child constructor 만들고 싶으면 꼭 mother의 기본 constructor 만들고 만들자!!! -> child class가 메모리 할당 받을때, mother class꺼 다 수용할 만큼의 크기 할당 받음 4. Destructor는 자식 -> 부모 순으로 실행..
객체간 관계 1. Composition 구성관계 -> 이미 전체에 속해있는 객체 자체가 다른 클래스에서 사용 못한다는 뜻! -> 속해있는 객체의 틀인 class는 재사용 가능 2. Aggreation 관계 -> class의 인자를 주소로 받으면! 여러 클래스와 함께 공유 -> 당연히 인자 업데이트할때도 주소로 받아야된다 -> 사용할때는 뭐 당연하게 ' -> ' 사용, 출력시에도 ' *인자' 방식으로 - 다만 분산처리 시에는 이 방법 사용 못한다! 3. Association 제휴 1) class 둘이 서로 friend 2) 서로 인자를 포인터로 가지고 있어야됨 3) 근데 그냥 이거보다, class 묶어쓸 새로운 calss를 만드는게 편하드라 4. 의존 : class 레벨에서는 몰라도 되고, 구현할때만 헤더 includ..
연산자 오버로딩 1. 덧셈, 뺄셈, 곱셈 ex) 연산자 우선순위는 * / 먼저 인건 그대로 2. 입출력 연산자 ofstream 사용하기 - 헤더는 fstream 사용 - 실행 시 out.txt 생성하고 거기에 텍스트 삽입 3. 비교 연산자
Class - 3 1. Class 안에 static으로 멤버를 선언하면 그 멤버는 객체 여러개를 선언해도 동일 -> static 멤버는 class안에서 초기화 XX 2. 정적 멤버 함수 : static 멤버 function은 this를 활용한 접근 불가능 : class 내에 있는 함수는 모든 객체가 공유 3. 친구 함수 : private에 손쉽게 접근 - class 자체를 friend 처리 4. 익명 객체