[C++] 백준 1697 숨바꼭질 BFS

2021. 3. 26. 00:38·Algorithm/Baekjoon
#include <iostream>
#include <queue>
#define MAX_LOCATION 100001
using namespace std;

int K, N;
int visited[MAX_LOCATION]{false};

void BFS(int curr);

int main()
{
	ios::sync_with_stdio(false);

	cin >> N >> K;

	BFS(N);
}

void BFS(int curr)
{
	queue<pair<int, int>> q;
	q.push({ curr, 0 });
	visited[curr] = true;

	while (!q.empty())
	{
		int currNode = q.front().first;
		int currSec = q.front().second;
		q.pop();

		if (currNode == K)
		{
			cout << currSec;
			break;
		}

		if (MAX_LOCATION > currNode - 1 && !visited[currNode - 1])
		{
			q.push({ currNode - 1, currSec + 1 });
			visited[currNode - 1] = true;
		}

		if (MAX_LOCATION > currNode + 1 && !visited[currNode + 1])
		{
			q.push({ currNode + 1, currSec + 1 });
			visited[currNode + 1] = true;
		}
			

		if (MAX_LOCATION > currNode * 2 && !visited[currNode * 2])
		{
			q.push({ currNode * 2, currSec + 1 });
			visited[currNode * 2] = true;
		}
	}
}

 

풀이

  1. BFS를 사용하여 1초당의 X - 1, X + 1, X * 2 경우의 수를 구한다.
  2. 방문한 곳을 표시하는 것이 메모리의 양을 초과하지않도록 계산한다.
저작자표시 (새창열림)

'Algorithm > Baekjoon' 카테고리의 다른 글

[C++] 백준 1012 유기농 배추 DFS, BFS  (0) 2021.03.29
[C++] 백준 2606 바이러스 DFS, BFS  (0) 2021.03.29
[C++] 백준 1260 DFS와 BFS  (0) 2021.03.25
[C++] 백준 2655 가장높은탑쌓기 DP  (0) 2021.03.23
[C++] 백준 1495 기타리스트 DP  (0) 2021.03.17
'Algorithm/Baekjoon' 카테고리의 다른 글
  • [C++] 백준 1012 유기농 배추 DFS, BFS
  • [C++] 백준 2606 바이러스 DFS, BFS
  • [C++] 백준 1260 DFS와 BFS
  • [C++] 백준 2655 가장높은탑쌓기 DP
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    dfs
    c++ 기초 플러스
    프로그래머스
    Java
    오블완
    위클리 챌린지
    spring
    알고리즘
    티스토리챌린지
    JPA
    SpringSecurity
    dp
    JWT
    백준
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] 백준 1697 숨바꼭질 BFS
상단으로

티스토리툴바