목록전체 글 (159)
Priceless

이번에도 BFS를 활용한 문제 실생활에서 BFS를 많이 사용하는 것일까 BFS가 많이 쓰이는 것 같다 빙산 문제는 다음 상태의 배열까지 고려해야 하므로 두 개의 배열을 사용한다 이후 접한 면의 수를 탐색한 후 그만큼 빼고 다음 상태에 덮어쓰기한다 처음보는 함수를 많이 사용했기 때문에 조금 더 익숙해져야 할 것 같다 // baekjoon 2573 #include #include #include using namespace std; // codes for fast I/O void init(){ cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); } int arr[301][301]; int next_arr[301][301]; bool visited[301]..

BFS로 해결할 수 있는 문제 그리디 알고리즘과 유사하게 풀 수 있는 문제다 0초 동안은 2배로 이동할 수 있으므로 먼저 2배 이동이 가능한지 여부를 판단한다 이후 한 칸 전진할지 후진할지를 판단한다 이후 min_ 값을 통해 최소 시간을 구한다 함수가 많이 쓰이진 않지만 꽤 복잡하게 구성되어 있는 문제인 듯하다 // baekjoon 13549 #include #include #include using namespace std; // codes for fast I/O void init(){ cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); } int arr[100001]; //bool visited[101][101][101] ; //int dir[6]..

3차원으로 접근하는 BFS 문제 3차원으로 접근해야 하므로 움직이는 방향 또한 x축, y축, z축에 맞게 설정한다 BFS를 진행한 후 모든 토마토를 검사했을 때 0이 있다면 -1을 출력하고 즉시 종료한다 테스트 케이스는 1회이므로 별도의 방문 여부 기록과 reset함수를 구현하지 않았다 크기의 제한이 있어서 그런가 생각보다 시간을 많이 소요되진 않았다 // baekjoon 7569 #include #include #include using namespace std; // codes for fast I/O void init(){ cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); } int arr[101][101][101]; //bool visited[..