배열이 아닌 비트로 표현한 수에, visited를 저장했다. 숫자를 나누어서 나머지 값들을 저장하는 것 대신, 숫자를 문자열로 바꾸었다.
BFS
qNow와 qNext를 이용해서 한 단계가 전부 끝나고 난 이후에 다음 단계가 진행될 수 있도록 했다.
상, 하, 좌, 우 탐색과 탐색을 안하고 지나가는 경우를 모두 고려해야한다.
qNow와 qNext를 이용해서 한 단계가 끝난 후, 다음 단계가 진행될 수 있도록 한다.좌표를 받으면 그 점에 대해 범위를 확장시켜가며 최대 포함 가능 집 개수를 센다. 2가 안됐는데, 3이 되는 경우도 있으니 안된다고 끝내면 안된다.
map_block 정리를 해줘야 함.
각 연산기호의 개수를 입력받고 나서, 모든 순서를 인덱스를 통해서 순열로 만들고 하나하나 계산해보면서 Max, Min값 기록해서 계산하자
우선순위 큐 -> 큐 -> 우선순위 큐(used가 있으면 더해줬다.) 두 군집이 같은 곳에서 만난 경우, cnt는 합쳐지고 d는 cnt가 더 큰 곳의 것을 따르게 되어야함. used에 q에 있는 것을 전부 옮겼음.
필요한 2의 개수와 1의 개수를 cnt1, cnt2에 저장. 1의 개수가 2의 개수보다 작을때까지 cnt2 한개를 cnt1 두개로 바꿔주는 작업을 했다.
투포인터를 활용해서 가장 높은 곳의 높이를 기록한 후 점차 줄여가며 갈 수 있는 높이인지를 확인 후 BFS 활용해서 내가 원하는 점들을 다 방문했는지 확인했다.
출력의 형태가 각 대회마다의 N번째 사람의 등수를 출력하는 것이므로N명의 사람들 자체를 정렬하는 방식은 별로다.
cost를 인덱스로 하는 safe라는 배열을 만들어서 무게만큼의 값을 부여했다.
1111(2)를 만들기 위해 (1<<4)-1
BFS DFS
Dijkstra
Dijkstra
DFS
BFS