본문 바로가기

Develop72

이진탐색 #include using namespace std; // 이진 탐색 소스코드 구현(반복문) int binarySearch(vector& arr, int target, int start, int end) { while (start target) end = mid - 1; // 중간점의 값보다 찾고자 하는 값이 큰 경우 오른쪽 확인 else start = mid + 1; } return -1; } int n, target; vector arr; int main(void) { // n(원소의 개수)와 target(찾고자 하는 값)을 입력 받기 cin >> n >> target; // 전체 원소 입력 받기 for (int i = 0; i > x; arr.push_ba.. 2024. 2. 13.
BFS 너비우선탐색 #include using namespace std; bool visited[9]; vector graph[9]; // BFS 함수 정의 void bfs(int start) { queue q; q.push(start); // 현재 노드를 방문 처리 visited[start] = true; // 큐가 빌 때까지 반복 while(!q.empty()) { // 큐에서 하나의 원소를 뽑아 출력 int x = q.front(); q.pop(x); cout 2024. 2. 13.
DFS 깊이우선탐색 #include using namespace std; bool visited[9]; vector graph[9]; // DFS 함수 정의 void dfs(int x) { // 현재 노드를 방문 처리 visited[x] = true; cout 2024. 2. 13.
[C++] STL Priority_queue 사용법 1. Priority_queue 란? 기본적으로 C++에서 자주 쓰이는 vector와 같은 container adaptor의 한 종류이며 C++에서 int와 같은 기본자료형으로 우선순위 큐를 사용한다면 큐에 있는 모든 원소 중에서 가장 큰 값이 Top을 유지하도록, 우선순위가 가장 크도록 설계되어 있다 또한 우선순위 큐는 내부적으로 Heap이라는 자료구조를 사용하고 있다. 간단하게 이 정도로 소개하고 바로 사용법을 살펴보자. 2. 기본적인 메소드 push() : 우선순위 큐에 원소를 추가한다 pop() : 우선순위 큐에서 top의 원소를 제거한다 top() : 우선순위 큐에서 top에 있는 원소 즉 우선순위가 높은 원소를 반환한다. empty() : 우선순위 큐가 비어있으면 true를 반환하고 그렇지 않.. 2024. 1. 7.
[C++] STL map 사용법 MAP이란? map은 각 노드가 key와 value 쌍으로 이루어진 트리입니다. 특히, 중복을 허용하지 않습니다. 따라서 map은 first, second가 있는 pair 객체로 저장되는 데 first- key로 second- value로 저장됩니다. C++의 map의 내부 구현은 검색, 삽입, 삭제가 O(logn) 인 레드블랙트리로 구성되어 있습니다. MAP 기본 형태 map map1; MAP 정렬 map은 자료를 저장할때 내부에서 자동으로 정렬합니다. map은 key를 기준으로 정렬하며 오름차순으로 정렬합니다. 만약 내림차순으로 정렬하고 싶은 경우와 같이 사용하면 됩니다. map map1; (만약 다른 방법으로 int데이터를 내림차순으로 정렬하고 싶을 경우, 데이터에 -(마이너스)를 붙여 삽입하여 처.. 2023. 12. 24.
[C++] STL lower_bound, upper_bound 사용법 #include 헤더 lower_bound(arr, arr+N, value) 배열에서 범위 내의 원소들 중 value값 보다 크거나 같은 첫 번째 원소의 주소를 리턴합니다. 만약 그러한 원소가 없다면 end값을 리턴합니다. upper_bound(arr, arr+N, value) 배열에서 처음으로 value값을 초과하는 원소의 주소를 반환합니다. 만약 그러한 원소가 없다면 end값을 리턴합니다. 1. 기본적인 사용법 /* lower_bound(start, end, target) */ #include vector v = { 1, 2, 3, 4, 5 }; lower_bound(v.begin(), v.end(), 3); int arr[5] = { 1, 2, 3, 4, 5 }; lower_bound(arr, ar.. 2023. 12. 21.
[C++] STL fill() 함수 사용법 fill 함수를 사용하려면 일단 헤더를 포함해줘야 한다. #include 사용 방법은 fill(초기화 시키고 싶은 부분의 시작 주소, 초기화시키고 싶은 부분의 끝 주소, 초기화할 값); 배열이라면 fill(arr, arr + 5, 10); 벡터라면 fill(v.begin(), v.end(), 10); 즉 for(int i = 0; i < 5; i++) { arr[i] = 10; } 이 for문을 사용한 코드와 fill(arr, arr + 5, 10); 이 한 줄은 같은 역할을 한다. fill(arr, arr + 2, 10); fill(arr + 2, arr + 5, 20); 이렇게 부분 부분씩 초기화시켜줄 수도 있다. 2023. 11. 1.
[C++] STL find() 함수 사용법 1. find() #include find(begin, end, value); 일련의 자료구조(Array, vector 등)에서 원하는 값을 탐색하는 함수 begin과 end는 iterator 객체가 와야 한다. 범위 내(begin - end)의 원소들 중에서 value와 일치하는 첫번째 원소의 iterator를 리턴한다. 범위 내에 찾고자 하는 값이 없다면 end를 반환한다. 2. string.find() #include string str; str.find(value); 문자열 내에서 value 값을 찾는다. 문자열 내에 value와 일치하는 값이 있다면 value의 첫번째 인덱스를 반환한다. 일치하는 값이 없다면 string::npos(== 쓰레기 값)를 반환한다. https://novlog.tis.. 2023. 10. 28.
[C++] STL list 사용법 연결리스트(list) 연결리스트는 배열의 각 요소가 값만 갖고있는 것이 아니라 다음 요소를 가리키는 포인터를 함께 가지고 있다. 이는 배열에서 중간에 추가 혹은 삭제할 때 뒤의 원소를 쭉 밀거나 뒤의 원소를 쭉 당겨와야하는 단점을 보완한 것이다. 배열의 요소들을 직접 미는 것이 아닌 포인터값만 변경해주는 것으로 임의의 위치에 추가/삭제 연산을 할 수 있다. C++에서는 list라는 자료형으로 연결리스트가 구현되어 있다. //리스트 선언 list list; //리스트 포인터 선언 list::iterator iter = list.begin(); -->> c++11이상부터 auto iter = list.begin(); 가능 반복자 begin() : beginning iterator 반환 end() : end .. 2023. 10. 22.
[C++] STL vector 사용법 벡터 vector는 C++ 표준 라이브러리에 있는 자료구조 컨테이너 중 하나로 사용자가 쉽게 사용하기 위해 정의된 클래스이다. 벡터의특징 1. 동적으로 원소를 추가할 수 있다. 즉, 크기가 자동으로 늘어난다. 2. 맨 마지막 위치에 데이터를 삽입하거나 삭제할 때에는 문제가 없지만 중간 데이터의 삽입 삭제는 배열과 같은 메커니즘으로 동작한다. 3. 배열과 마찬가지로 인덱스를 이용하여 각 데이터에 접근할 수 있다. 선언 vector v; // vector 변수 이름; 형태로 선언 삽입 연산 v.push_back(1); // 마지막에 1 추가 v.insert(v.begin() , 7); // 맨 앞에 7을 삽입 v.insert(v.begin() + 2 , 10); // index 2의 위치에 10 삽입 삭제연.. 2023. 7. 18.