본문 바로가기

분류 전체보기

(69)
[C++] 멀티셋[MULTISET] 핵심요약 key값이 중복이 가능한 set이다. 나머지는 set과 모두 동일하다. 사용법 #include //따로 을 추가하지 않는다. 나머지 기능들은 아래 글에서 확인하자. 2023.10.01 - [알고리즘을 위한 간략 정리/자료구조 - 연관 컨테이너] - [C++] 셋(SET) [C++] 셋(SET) 핵심요약 중복 제거 삽입되는 순서에 상관없이 정렬되어 입력된다. 자료구조 이진 트리로 구성되어 있다. 사용 방법 #include SET의 반복자(iterator) s.begin() //set의 시작이 되는 주소값 반환 s.end() //se dmoritle.tistory.com
[C++] 셋(SET) 핵심요약 중복 제거 삽입되는 순서에 상관없이 정렬되어 입력된다. 자료구조 이진 트리로 구성되어 있다. 사용 방법 #include SET의 반복자(iterator) s.begin() //set의 시작이 되는 주소값 반환 s.end() //set의 마지막 부분에 대한 주소값 반환(정확히는 마지막 뒤 공백구간) SET의 용량(capacity) s.empty() //비어있을 경우 true, 아닐경우 false를 리턴 s.size() //저장되어 있는 크기를 리턴 SET의 삽입, 삭제(modifiers) s.insert() //값 삽입 s.erase() //저장된 요소 삭제 s.clear() //저장된 요소들 전부 삭제 s.swap() //s1과 s2를 서로 교환 SET의 기능(operator) s.find() ..
[C++] 원하는 자리수까지 출력하기(반올림, 올림, 내림) 기본적인 반올림, 올림, 내림 헤더 파일이 필요 기본적으로 반올림은 round( 숫자 ), 올림은 ceil( 숫자 ), 내림은 floor( 숫자 )이다 소숫점 1자리에서 진행된다. #include #include using namespace std; int main(){ float num = 3.47; cout
[C++] 이분 탐색(Binary Search) - lower_bound, upper_bound 핵심 요약 이진 탐색이라고도 불리는 이 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 그러므로, 배열 내부의 데이터가 정렬이 되어있어야 한다. 시간 복잡도는 logN이다. STL 라이브러리 사용 #include //stl 라이브러리 사용을 위함. lower_bound(begin(), end(), value); upper_bound(begin(), end(), value); lower_bound란? begin()에서 end()의 범위 중에서 value값 이상이 나타나는 가장 작은 이터레이터를 반환하는 것입니다. value가 존재 하지 않는다면 value보다 큰 값 중 가장 작은 값이 나타나는 이터레이터를 반환합니다. algorithm 헤더 안에 존재합니다. v..
[C++] 이분 탐색(Binary Search) - while문 핵심 요약 이진 탐색이라고도 불리는 이 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 그러므로, 배열 내부의 데이터가 정렬이 되어있어야 한다. 시간 복잡도는 logN이다. 코드로 구현 변수 3개(start, end, mid)를 사용하여 탐색한다. 주로 while문을 통해 구성된다. 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터를 찾는다. [예제] N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 key라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 찾을 경우 1을 출력, 없을 경우 0을 출력하라. #include #include #include using namespace std; int n..
애드혹(AD-HOC) 핵심 요약 해당 문제를 풀기 위해서 잘 알려진 정교한 알고리즘을 적용하지 않고 해결할 수 있는 유형 즉, 하드 코딩(hard-coding)을 뜻함. 구현, 그리디, 수학 등의 유형의 문제들 이 유형의 문제는 창의적인 아이디어가 필요하다!
[C++] 페어(PAIR) 핵심요약한 공간에 2개의 값을 저장할 수 있게 해주는 클래스2개의 값이 묶여서 이동하면 좋겠다고 생각할 때 사용하면 좋다. 헤더파일#include //1번 방법#include //2번 방법, vector 헤더파일 안에 유틸리티가 들어있다.pair 변수명; 데이터 생성 및 참조pair p;p = make_pair(data1, data2); // 첫 번째 방법p = {data1, data2}; // 두 번째 방법p.first //첫 번째 data값 = data1p.second //두 번째 data값 = data2 정렬 관련 tip#include //STL의 sort함수를 사용하기 위해//first값을 기준으로 할 때sort(vec.begin(), vec.end()); //vec이라는 자료구조의 정..
[C++] 데큐(DEQUE) 핵심요약 앞뒤로 원소의 삽입, 삭제가 가능한 자료구조 원형큐 관련 문제에서 유용 기본 정의 vector와 같이 배열 기반의 구조이지만 vector의 단점을 보완 메모리가 부족할 때 새로운 메모리 블럭을 할당 ⇒ 삽입 시 성능 저하 X 헤더파일 및 선언 #include deque 변수명; 생성자 deque dq; //비어있는 deque dq를 생성 deque dq(10); //default(0) 값으로 초기화 된 10개의 원소를 가진 dq를 생성 deque dq(10, 4); //4의 값으로 초기화된 10개의 원소를 가진 dq를 생성 deque dq2(dq1); //dq1을 복사한 dq2를 생성. 삽입 및 삭제 관련 멤버함수 dq.clear(); //모든 원소를 제거합니다. dq.push_front(), ..