본문 바로가기

■ C++/STL 알고리즘

(4)
대소문자를 구분하지 않는다는 조건에 대하여 (대/소문자 변경) 우리가 문제를 해결하다 보면 대소문자를 구분하지 않고 문자열을 비교해야 하는 경우가 있습니다."Talk" 와 "taLk" 를 같은 문자열로 보겠다는 뜻입니다. 어떻게 하면 이 두 문자열을 같은 문자열로 만들어 줄 수 있을까요? 간단한 방법이 하나 있습니다.모든 영문자를 대문자로 변경하거나 소문자로 변경해주면 됩니다. 저는 소문자로 변경해주는 방법에 대해서 이야기해보겠습니다.가장 먼저 떠오르는 생각은 반복문으로 문자열의 첫 문자부터 끝 문자까지 확인하면서 대문자를 소문자로 변경해주는 방법입니다. 12345678910111213141516171819#include#include#includeusing namespace std; int main(){ vector vt = {"Talk", "taLk"}; cout
[STL 알고리즘] sort - 구조체 정렬 ▶ [STL 알고리즘] sort - 구조체 정렬알고리즘 문제를 해결하다보면 구조체를 정렬해야 할 경우가 생긴다. STL 알고리즘 중에 컨테이너를 정렬해주는 sort가 있다. 이를 활용하여 구조체를 정렬하는 방법을 알아보자.이해하기 쉽도록 간단한 문제를 만들어서 sort를 사용해 문제를 해결하는 과정을 설명하려한다. ▶ 문제우리는 사람 10명의 이름, 나이, 키, 몸무게를 알고있다. 10명의 사람들 중 모델이 될 사람을 뽑아야 한다. 그래서 키가 가장 크고, 몸무게가 적게 나가면서, 어린 사람을 찾으려 한다. 키가 큰 사람을 우선하는데, 키가 같은 경우에는 몸무게가 적은 사람을 우선하고, 키가 같으면서 몸무게도 같은 경우에는 어린 사람을 우선한다. STL 알고리즘 중 sort를 활용해서 문제를 해결하라. ..
[C++] next_permutation()을 활용한 조합 생성 ▶문제설명1부터 6까지의 중복되지 않은 숫자들이 있다. 6개의 숫자 중 3개를 뽑아내는 모든 경우의 수를 출력하라. ▶HintSTL을 활용하여 쉽게 해결할 수 있다. #include next_permutation( *.begin(), *.end() ) ); next_permutation( 배열의 시작 주소, 배열의 끝 주소+1 ) ); next_permutation()은 vector나 array의 시작주소, 끝주소를 매개변수로 받아서 vector(array)의 원소를 교환하여 순열을 만들어 주고 true를 반환하며 마지막 순열 생성 후 false를 반환한다. 같은 크기의 다른 배열을 생성하고 0으로 초기화 한 후에, 골라 낼 원소의 개수만큼 뒤에서부터 원소를 1로 변경하여 그 배열로 순열을 생성하고, 이..
[C++] STL vector를 활용한 배열 동적 할당 ▶#include1. 배열을 동적으로 생성하고 싶을 때 유용하게 사용 - 1차원 배열vector arr1 (10, 0); : 사이즈 10, 요소의 값을 0으로 초기화해서 선언 - 2차원 배열 (10x10)vector arr2(10, vector(10, 0)); vector arr3(10);for (int i = 0; i < 10; i++) {arr3[i] = vector(10,0);}arr2와 arr3는 동일한 결과를 보여준다.단지 선언시 초기화 하는 것과 아닌 것의 차이일 뿐이다. 원소 접근 방법은 일반 2차원 배열과 똑같다.