본문 바로가기

■ C++

(6)
대소문자를 구분하지 않는다는 조건에 대하여 (대/소문자 변경) 우리가 문제를 해결하다 보면 대소문자를 구분하지 않고 문자열을 비교해야 하는 경우가 있습니다."Talk" 와 "taLk" 를 같은 문자열로 보겠다는 뜻입니다. 어떻게 하면 이 두 문자열을 같은 문자열로 만들어 줄 수 있을까요? 간단한 방법이 하나 있습니다.모든 영문자를 대문자로 변경하거나 소문자로 변경해주면 됩니다. 저는 소문자로 변경해주는 방법에 대해서 이야기해보겠습니다.가장 먼저 떠오르는 생각은 반복문으로 문자열의 첫 문자부터 끝 문자까지 확인하면서 대문자를 소문자로 변경해주는 방법입니다. 12345678910111213141516171819#include#include#includeusing namespace std; int main(){ vector vt = {"Talk", "taLk"}; cout
[STL 컨테이너] deque 한번에 정리하기 ▶ [STL] deque 컨테이너vector 컨테이너는 컨테이너의 맨 앞에 원소를 추가하는 멤버함수가 없다. 배열의 맨 앞이나 중간에 원소를 추가하려면 나머지 원소들을 모두 뒤로 한 칸씩 이동시켜야한다. vector 컨테이너는 배열 기반으로 구현되어있으므로 원소를 앞이나 중간에 삽입하는 기능이 매우 비효율적으로 동작하게 된다. 또한 배열의 사이즈를 초과하는 경우 사이즈를 늘려서 재할당하고 기존의 값을 복사해주는데, 이 작업도 오버헤드가 크다. deque는 컨테이너의 앞과 뒤로 삽입과 삭제가 자유롭도록 구현되어있다. deque도 배열 기반으로 구현되어있지만, 원소를 앞으로 밀어내거나 뒤로 밀어내는 게 가능해졌기 때문에 vector의 삽입 연산보다는 좀 더 빠르게 동작한다. 컨테이너에 대해 알고싶다면 아래의..
[STL 컨테이너] vector(벡터) 한번에 정리하기 ▶ [STL] vector 컨테이너배열을 선언할 때 입력으로 몇 개의 데이터가 들어올 수 있는지 정확히 알지 못할 때가 있다. 표준 라이브러리에 있는 malloc()으로 배열을 동적 할당해본 경험이 있는가? 오늘 vector를 배우고 나면 특별한 경우가 아닌 이상 일일이 동적 할당해줄 필요가 없다. STL의 vetor는 배열을 동적 할당한 뒤 입력이 너무 많아 할당된 공간을 초과하는 경우 자동으로 사이즈를 늘려주도록 구현되어 있기 때문이다. 이미 구현되어 있는 클래스를 가져다가 사용 방법만 익혀 사용하면 된다. 벡터는 대표적인 시퀀스 컨테이너이다. 컨테이너에 대해 알고싶다면 아래의 링크를 클릭하세요. link : 컨테이너란? vector 컨테이너의 자주 사용되는 생성자와 멤버 함수를 살펴보자. 더 다양한..
[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차원 배열과 똑같다.