본문 바로가기

BFS7

[C++][백준] 14502번 연구소 :: seoftware 소스코드 BFS, 브루트포스 #include #include using namespace std; int N, M; int map[8][8]; int temp[8][8]; int dx[] = { -1, 0, 1, 0 }; int dy[] = { 0, 1, 0, -1 }; int answer = 0; //temp에 기존 map을 복사하는 함수 void copyMap(int (*from)[8], int (*to)[8]) { for (int n = 0; n < N; n++) { for (int m = 0; m < M; m++) { to[n][m] = from[n][m]; } } } //[BFS] 벽을 3개 세운 후 바이러스를 퍼뜨리고 전염되지 않은 곳을 세준다. void spreadVirus() { int r.. 2020. 4. 10.
[C++][프로그래머스][BFS DFS] 단어변환 :: seoftware 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> cog와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지 return 하도록 solu.. 2020. 3. 1.
[C++, Python][프로그래머스][DFS BFS] 네트워크 :: seoftware 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[.. 2020. 2. 29.
[C++][백준 1012][BFS DFS] 유기농 배추 :: seoftware 문제 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net 소스코드 #include #include using namespace std; int dx[] = { -1, 0, 1, 0 };.. 2020. 2. 29.
[C++][백준 1697][BFS DFS] 숨바꼭질 :: seoftware 문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net 소스코드 #include #include using namespace std; int x, y; //x는 수빈, y는 동생 좌표 in.. 2020. 2. 29.
[C++][백준 7576][BFS / DFS] 토마토 :: seoftware 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토들의 정보가 주어진다. 즉, 둘째 줄부터 N개의 줄에는 상자에 담긴 토마토의 정보가 주어진다. 하나의 줄에는 상자 가로줄에 들어있는 토마토의 상태가 M개의 정수로 주어진다. 정수 1은 익은 토마토, 정수 0은 익지 않은 토마토, 정수 -1은 토마 www.acmicpc.net 소스코드 #include #include #include using namespace std; int N, M; int tomato[.. 2020. 2. 29.
[C++][프로그래머스] 타겟넘버 - 깊이/너비 우선 탐색(DFS/BFS) :: seoftware 알고리즘 그래프에서 모든 노드를 방문해야 할 때 DFS 또는 BFS 를 사용한다. DFS(깊이우선탐색 - Depth First Search)는 그래프에서 아래로 내려갈 수 있을 때까지 갔다가 막히면 되돌아와서 다시 내려가는 탐색 방법이고 BFS(너비우선탐색 - Breadth First Search)는 그래프에서 한 노드에서 인접한 노드를 다 살핀 후 인접한 노드의 인접한 노드를 같은 방식으로 살피는 탐색 방법이다. 문제 더보기 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = .. 2020. 2. 11.