몽셀통통의 블로그
개념모든 수는 이진법인 비트로 나타낼 수 있다.일반적으로 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...
문제https://www.acmicpc.net/problem/1194 코드가중치가 없고 최단 거리를 찾는 문제이므로 bfs를 사용열쇠를 찾아서 출구로 나가야한다는 점이 특이한데 비트마스크를 이용하면 된다큐를 쌓을때 4방향으로 뻗어가는 for 문에서 nkey을 변수로 안두고 했다가 고생했다 ㅠㅜ열쇠를 찾아야 하므로 한번 지났던 곳을 다시 지날 수 있으므로 3차 배열로 visit을 두었다 풀이123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657#include #include using namespace std; int N, M,flag,ans;char arr[51][51];..
문제https://www.acmicpc.net/problem/5427 풀이가중치없이 최단 거리를 구하는 것이므로 bfs를 사용불을 넣을 큐 하나와 상근이의 위치를 넣을 큐 하나씩 해서 큐를 모두 두개 사용한다.불을 넣은 큐를 일단 pop을 해주고 그 다음 상근이 큐를 pop 해준다 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#include #include using namespace std; int W, H,flag,ans;char arr[1001][1001];int dir[4][2] = { {..