목록IT/자료구조 && 알고리즘 (3)
몽셀통통의 블로그
개념모든 수는 이진법인 비트로 나타낼 수 있다.일반적으로 1은 true이고 0은 false이다 이는 알고리즘에서 중요한 역할을 하는데그 이유는 다중으로 true인 경우 하나의 숫자로 나타낼 수 있기 때문이다. 이진법은 다음과 같이 표현할 수 있다. 1 000001 2 000010 4 000100 8 001000 16 010000 32 100000 ... .... 예를 들어, 이진법 001100 은 3번째, 4번째가 true인데 십진수로 나타내면 12로 하나의 수로 나타낼 수 있다. 비트 연산자는 다음과 같다. 출처https://ko.wikipedia.org/wiki/C%EC%99%80_C%2B%2B%EC%9D%98_%EC%97%B0%EC%82%B0%EC%9E%90#.EC.97.B0.EC.82.B0.EC...
여러 알고리즘 문제에서 완전 탐색으로 걸러지지 않을 것 같은 느낌의 문제가 종종 등장한다.이러한 대부분의 경우는 dfs를 사용하여야 하는데 이 알고리즘을 사용해 보지 않는 사람들은이해하기 어려울 수 있다. 이 알고리즘도 마찬가지로 재귀함수를 토대로 만들어 진다. int visit[MAX] = { 0 }; int n; void function(int i, int j){ if ( n==d ) return; for(int h=0 ; h
일반적으로 탐색과 관련된 재귀적 함수를 짤 때,visit 행렬을 만들어 이전에 방문한 기록이 있는지,있으면 1, 없으면 0으로 두어서 중복 방문을 방지한다 코드 예시 int visit[MAX][MAX] = { 0 }; void recursive(int i, int j){ if (checkvisit[i][j]) return; visit[i][j] = 1; (네 방향으로 이동하는 코드) visit[i][j] = 0; } 코드를 간단하게 작성해 보았다.위와 같이 보통 visit 행렬을 사용하여 방문하였는지 확인하게 되는데맨 처음 if 문을 통해서 해당 위치가 이전에 방문하였는지 체크하고방문하지 않았다면 visit하고 마지막에 다시 0으로 수정해 주어야완전 탐색이 가능하다 모든 코드의 마지막에 다시 0으로 초기..