stl

[Programmers 알고리즘, C++]#Level 1_키패드 누르기 Programmers 알고리즘 문제 풀이, Level1_키패드 누르기 STL 컨테이너 활용과 규칙을 찾아 풀이하는 문제입니다. 문제 풀이 먼저, "1 - 4 - 7"은 "L", 그리고 "3 - 6 - 9"는 "R"이 확정입니다. 따라서, C++가 제공하는 STL 컨테이너 중 "map"을 활용해봤습니다. key 는 키패드의 숫자로 설정하고, 미리 확정된 손을 value로 하였습니다. 예를 들면, {1, "L"}, {3, "R"}, ... etc 물론, "2 - 5 - 8 - 0"은 정해진 손이 없기 때문에 "U(Undefined)"로 value를 저장합니다. 더불어, '*', '0', 그리고 '#'은 편의상 각각 10, 11, 그리고 ..
[Programmers 알고리즘, C++]#Level1_크레인 인형 뽑기, 2차원 배열, stack, STL 컨테이너, adjacent_find() Programmers 알고리즘 문제 풀이, Level1_크레인 인형뽑기 2차원 배열의 개념과 STL 컨테이너 활용 문제 문제 풀이 문제는 스택 자료구조에대한 이해와 2차원 배열의 활용을 요구합니다. 먼저, 주어진 2차원 배열에서 탐색을 진행하고, 스택에 차례대로 "push_back" 합니다. 간단하게 stack(바구니)에 저장된 이전 항목과 현재 저장할 항목을 비교할 수 있지만, STL 알고리즘을 활용해보고자 "adjacent_find"를 사용해보겠습니다! 굉장히 간단합니다. 바로 코드를 살펴보겠습니다. * 주의할 점은 "N x N" 격자 밑에 있는 숫자는 ..
[Basic C++] #55_템플릿 C++의 템플릿 중 "템플릿"에 대해 알아보겠습니다. "전문가를 위한 C"의 11 항목, "템플릿을 이용한 제네릭 코드 작성"에 해당하는 내용입니다. 템플릿 "템플릿"은 제네릭 프로그래밍의 좋은 예시입니다. 먼저, 제네릭 프로그래밍이란 데이터 형식으로부터 독립적이며, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 프로그래밍 방식입니다. 템플릿은 데이터 타입이 "매개 변수"를 통해 표현되며, 우리는 데이터 타입의 파라미터화로 기억하면 되겠습니다! 1. 템플릿 선언 template 템플릿 선언부 먼저 살펴봅시다! 앞서 말했듯이, 템플릿은 "데이터 타입"을 파라미터화합니다. 우리는 타입 파라미터를 "T"로 가정하며, "template"과 "typename" 키워드와 ..
[Basic C++] #54_STL 작업 알고리즘, for_each() STL 알고리즘 중 "for_each 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. for_each() #include #include #include #include using namespace std; int main() { map m{ {"One", 1}, {"Two", 2} }; // for_each( 원본 범위의 첫 번째, 원본 범위의 마지막, 콜백 함수 or 람다 ) for_each(cbegin(m), cend(m), [](const auto& p) {cout
[Basic C++] #53_STL 알고리즘, remove + erase, 옮기고 삭제하기 STL 알고리즘 중 "remove 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. remove() #include #include #include #include using namespace std; int main() { vector vStr{ "", "one", "", "two", "three", "four" }; cout
[Basic C++] #51_STL 알고리즘, replace STL 알고리즘 중 "replace 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. replace() #include #include #include #include using namespace std; int main() { vector v{ 10, 20, 30, 40, 50 ,60 }; // 하한 값은 30, 상한 값은 50으로 Clamping합니다. int low = 30; int high = 50; // replace_if( 원본 범위 첫 번째, 원본 범위 마지막, 프레디킷, 교체할 새로운 값 ) replace_if(begin(v), end(v), [low](in..
[Basic C++] #51_STL 이동 알고리즘, move STL 알고리즘 중 "이동 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. move() #include #include #include #include using namespace std; class MyClass { public: // 1. vecDest에 vecSrc만큼의 공간을 할당하기위해 기본 생성자가 필요합니다. MyClass() = default; // 2. MyClass의 복제 생성자를 컴파일러가 제공하는 디폴트 복제 생성자를 사용합니다. MyClass(const MyClass& src) = default; MyClass(string str) :myStr(s..
[Basic C++] #50-1_STL 알고리즘, 변경 순차 알고리즘, transform(), copy(), copy_if(), copy_n() STL 알고리즘 중 "변경 순차 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 변경 순차 알고리즘 원본 항목들을 다른 구간에 복제해 넣거나, 삭제하거나, 변경하는 등의 "변경 순차 알고리즘"은 당연하게도 원본 항목들에 변경을 가합니다. 이러한 알고리즘들은 모두 "원본 범위"에서 항목들을 읽어드리고, 읽어드린 항목들을 통해 "대상 범위"에 추가하거나, 수정합니다. 물론, "원본 범위" == "대상 범위"의 경우도 가능합니다. * 주의: map, multimap, set, 그리고 multi..
[Basic C++] #49_STL 알고리즘, 불변 순차 알고리즘 STL 알고리즘 중 "불변 순차 알고리즘"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 불변 순차 알고리즘 불변 순차 알고리즘은 "항목 열" 대상으로 동작하고, 원본 데이터에 변경을 가하지 않는 알고리즘을 의미합니다. 예를 들면, 어떤 항목 열의 범위 안에서 항목을 찾거나, 다른 항목 열의 범위와 비교하는 등 유틸리티 성격을 갖는 알고리즘들을 포함합니다. 검색 알고리즘 [Basic C++] #43_STL 알고리즘, find, find_if, accumulate [Basic C++] #43_STL 알고리즘, find, find_if, accumulate STL 알고리즘 중 ..
[Basic C++] #48_함수 객체 어댑터, 바인더, not_1(), not_2(), mem_fn() STL 알고리즘 중 "함수 객체 어댑터"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. 함수 객체 어댑터 C++에서 제공하는 함수 객체를 보다 다방면에서 활용하기 위해 우리는 "함수 객체 어댑터"를 사용합니다. 함수 객체가 주어진 인터페이스와 형태가 다를 경우, 우리는 함수 객체를 단독으로 사용할 수 없습니다. 예를 들면, find_if의 프레디킷 함수는 하나의 인자만 넘겨받지만, "less()" 비교 함수 객체는 두 개의 인자를 필요로 하기 때문에 우리는 이때 함수 객체 어댑터를 활용합니다. 코드를 통해 자세한 내용을 살펴보겠습니다...
Hardii2
'stl' 태그의 글 목록 (3 Page)