C_C++ 프로그래밍/C_C++ 프로그래밍
-
[Algorithm] C++ Bitmask란?C_C++ 프로그래밍/C_C++ 프로그래밍 2019. 3. 17. 03:49
Bitmask란 비트위에 마스크를 씌우는 방식을 통해서어떤 위치에 집합의 원소가 존재하는지 아닌지, 추가하는 등의 행위를 말합니다. 주로 이를 마스크와 같다고 하여, 비트마스크라고 말합니다. 간단한 예시를 들자면, 네가지 원소를 가질 수 있는 집합이 있습니다. 우리는 이를 {1,2,3,4}로 나타낼 수 있습니다. 이 집합을 보다 효율적이고 간결하며 가독성있게 나타낼 수 있는 것이, 바로 비트표기이며 우리는 이를 1111(2)로 나타낼 수 있습니다. (오른쪽부터 원소 1입니다) 이 집합의 원소 중, 세번째 원소가 존재하는 지 확인하고자 한다면, 우리는 마스크를 씌울 수 있는데 이것이 비트마스크입니다. 1111(2) & 0100(2) => 0100(2) > 0 으로 세번째 원소가 존재하게 됨을 알 수 있습니..
-
[C++] [Algorithm] C++에서 next_permutation 함수( prev_permutation 함수)를 통해서 순열 구하기C_C++ 프로그래밍/C_C++ 프로그래밍 2019. 3. 16. 23:20
next_permutation => 직역하자면, 다음 수열이라는 의미입니다. STL에서 제공하는 함수이며 vector, 배열로 구현이 가능합니다. // 사전 순으로 정렬 1 3 4 2 의 다음 수열은 1 4 2 3 이 됩니다.이때 1 4 2 3 을 만들기 위해서 4가지 단계를 거치는데 1. 어디까지가 감소 수열인가 찾기.1 3 4 2 (감소 수열 4 2) 이떄 i = 2 2. i-1보다 작거나 같으며, 가장 뒤에 있는 수 j 를 찾기1 3 4 2 (2보다 작으며, 가장 앞에 있는 수를 찾습니다)이때 j = 3 (2를 가르킵니다)의 이전 인덱스 j = 2( 4를 가르킵니다) 3. 그 둘을 Swap 시킵니다.1 4 3 2 4. i -1 이후로 뒤집습니다.1 4 2 3 1234567891011121314151..