목록BFS (4)
이우의 개발일지

백준 13549번 숨박꼭질 3 문제 문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.입력첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.출력수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.예제 입력 1 5 17예제 출력 12힌트수빈..

코드트리 화면에 출력 문제 조건 : 시간제한(1초), 메모리 제한 (80MB) 화면에 출력 풀이1. BFS이 문제를 풀면서 한 가지 간과한 점이 있다. 처음 풀이를 풀 때 재귀함수로 풀이를 시작했으나, 시간초과가 뜨는 에러를 범했다. 재귀함수는 DFS와 똑같이 깊이 우선 탐색이라 한 경로를 끝까지 탐색하고, 목표 상태에 도달하면 그 값을 기록한 후 다른 경로를 탐색하는 방식이기 때문에 빠르게 최적의 값을 탐색할때는 적합하지 않다. 따라서, BFS를 사용하면 가까운 상태부터 탐색하며, 모든 경로를 확장하는 방식인데 이 방식은 최단 경로나 최소 동작 수를 찾을 때 유리한 알고리즘이다. 목표 상태에 처음으로 도달한 순간 항상 최단 경로 또는 최소 동작 수에 해당하기 때문에 목표 상태에 도달하면 바로 종료..

백준 11724번 BFS 11724번 BFS 풀이이 문제는 일반적인 BFS 형식과는 조금 달라서 헤맸다. 상하좌우 탐색이 아닌, 모든 정점을 탐색해야해서 DFS로의 풀이도 가능하다. 모든 탐색을 해야해서 vector 함수를 이용해서 들어오는 인자값들을 입력해줬다. 한방향이 아니라 양방향이라 두 개다 넣어준 것이다. for (int i = 0; i > u >> v; vec[u].push_back(v); vec[v].push_back(u); } BFS 함수안 형식도 비슷하지만, 역시나 vector의 사이즈와 들어있는 인자값을 통해 조절해주는 포인트가 중요하다. 탐색시 vis라는 방문 인자를 1로 바꿔주는 것도 중요하다. 11724 백준 전체코드 #include #include #include usi..