일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- Critical_Path_Analysis
- singly Linked List
- list
- deletion
- 총정리
- connected_component
- '0'
- sort
- Pair
- 예제
- 알고리즘
- sstream
- STL
- 자료구조
- Heap
- template
- 5397
- Articulation_Point
- 13305
- function_template
- 구현
- data_structure
- c++
- red-black tree
- Algorithm
- 백준
- class_template
- 문법
- qsort
- Biconnected_Component
- Today
- Total
- Today
- Total
- 방명록
목록분류 전체보기 (85)
어제의 나보다 성장한 오늘의 나
◎ key , value 가 pair 형태로 연결되어 있는 자료 구조. ◎ 이진 탐색 트리의 일종이다. (레드 블랙 트리) ◎ 값을 찾을 때 시간 복잡도가 O(logN)으로 빠른 편이다. ◎ 삽입 / 삭제 할 때 시간 복잡도는 O(logN)으로 오래 걸린다. ◎ key 값을 기준으로 자동 정렬 되어 있다. ◎ key값이 중복 불가능 하다. 즉 , key 값이 유일하다. ◎ 메모리가 자동으로 동적 할당 된다. STL 사용법 헤더 파일 #include 선언 map m; key , value 순으로 선언. map m; // 내림차순 key 기준으로 기본 오름차순 이지만 greater를 사용하면 내림차순으로 바뀐다. 값 삽입 4가지 방법. m.insert( {0,"zero"} ); m.insert(make_pa..
풀이 : ① 입력 된 문장을 +,- 와 숫자로 나눈다. ( substr 사용) ② 조건에 맞게 계산을 한다. 가장 작은 값이 결과로 나오도록 해야 하므로 - 가 나오기 전까지는 모든 숫자를 더 해주고, -가 한 번이라도 나오면 그 이후로는 모두 빼주면 된다. Coding #include #include #include using namespace std; int main(int args ,char** argv){ string str; cin >> str; vector ops; // str에 들어있는 + , - 순서대로 저장. vector nums; // str에 들어있는 숫자들 순서대로 저장. int first_index = 0; int last_index = 0; // 입력된 문장을 + , - 와 숫자..
에서 제공하는 Find 함수가 있고, 에서 제공하는 Find 함수가 있는데 두 가지를 모두 정리해보았다. ① 의 find 함수 헤더파일 #include 사용법 s.find( 찾을 문자열 , 시작 위치 , 찾을 문자열의 길이 ) string s = "Hello My Name is metoday."; int non; non = s.find("h"); //non == npos cout
1) s.substr(시작 위치 , 문자열의 길이) string s = "0123456789"; string subs1 = s.substr(2,5); // subs1 = "23456" string s = "0123456789"; string subs1 = s.substr(5); // subs1 = "56789" string s = "0123456789"; string subs1 = s.substr(); // subs1 = "0123456789" 시작 위치와 문자열의 길이를 입력 받아서 문자열을 자른다. 숫자 하나만 집어넣으면 시작 위치로 인식되어 시작 위치 부터 끝까지로 문자열을 자른다. 아무 것도 넣지 않으면 s 전체가 복사 됨. find 함수와 함께 사용 string s = "0123456789"; ..
알고리즘 도시를 하나 씩 옮겨가면서 첫 번째 도시~ 현재 도시 중 가장 주유 값이 적은 것을 선택한다. 현재도시~다음 도시 까지의 도로의 길이를 구한다. (첫 번째 도시 ~ 현재도시 중 가장 적은 주유값) * (현재도시~다음 도시 까지의 도로의 길이) 를 total에 더한다. 이 과정을 첫 번째 도시 부터 마지막 도시까지 적용하면 쉽게 구할 수 있다. Coding #include #include using namespace std; int main(int args ,char** argv){ int N ; long long int temp; cin >> N; vector street; vector cost_gas; for(int i = 0 ; i > temp; street..
◎ next , prev 두개의 노드 포인터를 가지고 있다. ◎ Single Linked List에 비해 함수 처리가 더 용이하고 접근성이 더 뛰어나다. ◎ 맨 앞에는 head 노드 , 맨 뒤에는 tail 노드가 있다. ◎ 삽입 / 삭제가 빠르다. 구현 구조체 1) Node Struct struct Node{ int data; // data in Node. Node* prev; // pointing before Node. Node* next; // pointing after Node. }; using pNode = Node*; 2) List Struct struct List{ Node* head; // front of list. Node* tail; // end of list. List(){ head =..
Vector ◎ 동적 배열(dynamic array) 구조 ◎ Iterator & Index 접근이 가능 (개별 원소에 접근 가능) ◎ 접근 속도가 빠름 ● 삽입/삭제가 느림 (배열 기반) List ◎ Double Linked List(더블 링크드 리스트) 구조 ◎ Iterator를 이용한 접근 ◎ 삽입 / 삭제가 빠름 ● 접근 속도가 느리다. ● 개별 원소에 접근 불가능 어떤 경우에 어떤 container를 사용해야 할까? 삽입 , 삭제가 빈번할 경우 -> List 개별 원소에 접근을 자주 해야할 경우 -> vector Vector STL 헤더파일 #include 선언 vector v1 ; vector v2 = {4,3,2}; vector v3(4,3); // v3 = {3, 3, 3, 3} vecto..
문제 설명 입력된 값들 각각 자신 보다 작은 값이 몇 개 있는 지를 입력된 순서대로 출력 하면 되는 문제이다. 단 , 자신 보다 작은 값을 셀 때 중복 된 값들은 1개로 처리 된다. 문제 풀이 시간 제한은 2초. 입력 값은 0 ~ 10^6 까지 이다. 시간복잡도 O(N^2) 로는 풀 수 없고 O(NlogN) 으로 풀어야 한다. algorithm 의 sort 함수 -> O(NlogN) algorithm 의 lower_bound ->(O(logN) 함수 * N번) 를 사용할 것이다. Coding #include #include #include using namespace std; int main(int args ,char ** argv){ int N; // 좌표의 갯수 int X; // 좌표 값 vector..