백준 1697 숨바꼭질(c++)

2022. 8. 14. 20:21·PS/깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]

https://www.acmicpc.net/problem/1697

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

<코드>

#include <iostream>
#include <queue>
using namespace std;
bool visited[200001] = {false};
int main()
{
	int start,end;
	queue<pair<int,int>>q;
	cin>>start>>end;
	q.push({start,0});
	visited[start] = false;
	while(!q.empty())
	{
		
		int position = q.front().first;
		int success = q.front().second;
		q.pop();
		if(position<0 || position>100000) continue;
		if(position == end) {
			cout<<success<<'\n';
			break;
		}
		if(!visited[position*2])
		{
			visited[position*2] = true;
			q.push({position*2,success+1});
		}
		if(!visited[position+1])
		{
			visited[position+1] = true;
			q.push({position+1,success+1});
		}
		if(!visited[position-1])
		{
			visited[position-1] = true;
			q.push({position-1,success+1});
		}
	}
}

<풀이 과정>

기본 bfs 문제이다. 

각각의 시작좌표와 방문횟수(초기값=0)을 큐에 푸쉬해준다. 그리고 방문할수 있는 경로 (한칸 뒤로(x-1), 한칸 앞으로(x+1), 두배 앞(2*x)으로) 한번씩 각각 이동하고 도착점과 만나게 되면 횟수를 출력해주면 끝이다.

visited(방문 여부)를 false로 초기화하고 방문하게 되는 좌표는 true시켜주면 겹치는 좌표는 넘어가기 때문에 visited 변수를 선언해준 것이다. 

저작자표시 비영리 변경금지 (새창열림)

'PS > 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]' 카테고리의 다른 글

백준 1926 그림(c++)  (0) 2022.08.16
백준 2644 촌수계산(c++)  (0) 2022.08.15
백준 7576 토마토(c++)  (0) 2022.08.14
17086 아기 상어 2(c++)  (0) 2022.08.12
백준 1260 DFS와 BFS(c++)  (0) 2022.08.12
'PS/깊이 우선 탐색, 너비 우선 탐색[DFS, BFS]' 카테고리의 다른 글
  • 백준 1926 그림(c++)
  • 백준 2644 촌수계산(c++)
  • 백준 7576 토마토(c++)
  • 17086 아기 상어 2(c++)
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (383)
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (22)
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (92)
        • Effective Java (5)
        • Java Concept (20)
        • Spring (61)
        • Design Pattern (3)
      • Python (2)
      • Vscode (1)
      • DevOps (43)
        • AWS (27)
        • Git (7)
        • Docker (6)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (2)
        • MatJido (2)
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    정보처리기사
    AWS
    Spring
    BFS
    메타코딩
    sqld
    백트래킹
    정보처리기사 실기
    정보처리기사 필기
    이펙티브 자바
    일본여행
    다이나믹 프로그래밍
    너비 우선 탐색
    Wi-Fi
    docker
    dp
    springboot
    dfs
    Effective Java
    컴퓨터구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
백준 1697 숨바꼭질(c++)
상단으로

티스토리툴바