본문 바로가기

알고리즘19

[비트 마스킹][c++] 개념과 활용 방법에 대해서 알아보자 목차 비트연산자의 기본 사용&비트단위로 AND 연산을 한다.|비트단위로 OR 연산을 한다.^비트단위로 XOR 연산을 한다.~피연산자의 모든 비트를 반전시킨다.피연산자의 비트 열을 왼쪽으로 이동시킨다.>>피연산자의 비트 열을 오른쪽으로 이동시킨다.  비트연산자의 활용 방법idx번째 비트끄기S &= ~(1 idx번째 비트 XOR 연산S ^= (1 최하위 켜져있는 비트 찾기idx = (S & -S)크기가 n인 집합의 모든 비트를 켜기(1idx번째 비트를 켜기S |= (1 idx번째 비트가 켜져 있는지 확인하기if(S & (1   idx번째 비트끄기#include#includeusing namespace std;//idx번째 비트끄기int main() { int S = 18; //10010 .. 2024. 7. 9.
완전탐색과 백트래킹 c++ 설명 완전 탐색완전 탐색은 말 그대로 모든 경우의 수를 탐색하는 방법으로 브루트 포스라고 불린다(brute-force)완전 탐색의 방법은 반복문과 재귀함수로 나뉜다. 반복문반복문으로 가능하다면 반복문으로 하는 것이 좋다. 재귀함수너무 복잡하거나 어떠한 행위는 반복하는데 매개변수만 수정해서 넘기면 될 것 같은 경우에 시행한다.   예시 문제100이하의 수 조합이 주어질 때 소수가 되는 경우의 수를 모두 구하여라 입력예시:1024 35 38 40 49 59 60 67 83 98 코드 구현#include #include #include #include #include using namespace std;vector v;vector s;bool isPrime(int n) { if (n == 0) return fal.. 2024. 6. 24.
[자료구조][스택] 중위 수식 변환 프로그램 c구현 목차 자료구조에서 스택을 활용한 후위 수식과 관련된 문제를 풀고 공부하고자 한다.   기본 스택 구조체(단항 연산자때문에 rank를 따로 만들어주었다.)typedef struct Node { char data; int rank; struct Node* next;}Node;typedef struct Stack { Node* head; Node* cur; int size;}Stack;  스택의 필요한 ADT// 스택 초기화 함수void init(Stack* s) { s->size = 0; s->head = (Node*)malloc(sizeof(Node)); s->head->next = NULL;}// 스택에 데이터를 추가하는 함수void push(Stack* .. 2024. 5. 5.
[백준] 모듈러 연산 정의 및 활용 목차  모듈러의 정의어떤 정수 A를 다른 정수 N으로 나누면 나오는 나머지를 말한다. 모듈러 연산의 여러 성질들 분배 법칙의 성립(A +(-) B) mod C = (A mod C +(-) B mod C) mod C(A * B) mod C = (A mod C * B mod C) mod C  덧셈, 뺄셈, 곱셈에 관련된 성질a와 b로 m으로 나눈 나머지가 같고 c와 d를 m으로 나눈 나머지가 같으면 a ± c 와 b ± d 를 m으로 나눈 나머지도 같다.예)49 1 (mod 8) 37 5 (mod 8) 86 6(mod 8)  거듭 제곱의 성질a와 b를 m으로 나눈 나머지가 동일 하다면,각 숫자를 동일하게 거듭제곱한 숫자를 m으로 나눈 나머지도 동일하다예)77 7 (mod 8)77 ^ 10 7 ^ 1.. 2024. 4. 29.
728x90