BFS

Algorithm/문제풀이

[백준/Swift] 16953 A -> B

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 16953 A -> B 제출 언어: Swift 알고리즘 분류: 그래프 이론 그리디 알고리즘 그래프 탐색 너비 우선 탐색 풀이 숫자 A에서 B로 만드려면 2를 곱하기와 맨 뒷 자리에 1 붙이기를 반복해야 한다. 만약 예를 들어 2부터 시작한다면, 4와 21로 만들 수 있고, 또 4로는 8과 41, 21로는 42와 211을 만들 수 있다. 하나의 숫자로 두 개의 수를 만들 수 있으므로 다음과 같은 피라미드 형태의 수열이 생긴다. 우리가 구하려는 것은 필요한 연산의 최솟값이므로 BFS로 Depth별로 탐색하여, B의 숫자에 도달하면 해당 Depth를 반환하고, 도달하지 못하는 경우 -1을 반환하는 알고리즘을 작성하였다 BFS 적용 먼저 처음 숫자인 A를 q..

Algorithm/문제풀이

[백준/Swift] 2606 바이러스

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 2606 바이러스 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 풀이 해당 문제는 그래프에서 쌍방향으로 연결되어 있는 노드의 개수를 카운트하는 것으로 이해하였다 나는 이 문제를 BFS(Breadth-First-Search)를 이용하여 풀이하였다 DFS로도 풀 수 있는 문제였지만 점진적으로 퍼져가는 바이러스를 시각적으로 표현하기에는 BFS가 적당할 것 같았다 for i in 0.. count = 0분명히 컴퓨터들은 쌍방향 연결이지만, 내가 직전에 짠 코드는 앞에 써져 있는 숫자의 컴퓨터가 뒤에 써져 있는 숫자의 컴퓨터로 바이러스가 퍼지는 경우만 고려하였다 그러므로 다음과 같이 코드를 변경해주었다 단순히 반대방향으로의 경..

Algorithm/문제풀이

[백준/Swift] 1303 전쟁 - 전투

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 1303 전쟁 - 전투 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 풀이 기본 BFS, DFS문제에 마지막 병사의 수를 제곱해서 더해주는 부분만 처리해주면 되는 문제였다 나는 visited 2차원 배열로 방문 여부를 파악하고 arr에 전쟁터에 있는 병사의 팀 상태를 입력해준다 func countSoldier(_ team: Character, _ x: Int, _ y: Int, _ count: inout Int) -> Int { visited[x][y] = true guard arr[x][y] == team else {return count} for i in 0...3 { if arr[x+dx[i]][..

Algorithm/문제풀이

[백준/Swift] 2667 단지번호붙이기

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 2667 단지번호붙이기 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 풀이 그래프 이론 그래프는 정점과 그 정점들을 연결하는 간선으로 이루어진 자료구조의 일종이다 그래프 탐색 : 하나의 정점으로부터 시작하여 차례대로 조건에 맞는 모든 정점들을 한 번씩 방문한다 DFS(Depth-First-Search) 깊이 우선 탐색 BFS(Breath-First-Search) 너비 우선 탐색 방향이 있을수도, 없을수도 있다 ex) 지하철 노선의 최단 경로 및 선수 과목 등 DFS 최대한 깊이 탐색한 후, 더 이상 깊이 갈 곳이 없을 경우, 옆으로 이동한다 루트 노드에서 시작해서 다음 분기로 넘어가기 전에 해당 분기를..

Algorithm/문제풀이

[백준/Swift] 3085 사탕 게임

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 3085 사탕 게임 제출 언어: Swift 알고리즘 분류: 구현 브루스포스 알고리즘 풀이 브루스 포스 알고리즘 Brute(무식한) Force 알고리즘 : 모든 가능한 경우의 수를 모두 탐색하며 요구 조건에 충족하는 결과만을 가져옴 완전 탐색 알고리즘 주어진 문제를 선형 구조로 구조화 한 후 반복문으로 원하고자 하는 해를 구할 때까지 탐색 BFS(너비 우선 탐색)도 브루스 포스 방식의 완전 탐색 알고리즘이다 알고리즘 설계 입력받은 NxN크기의 사탕들을 (N+1)*(N+1)크기의 배열에 넣어준다 -> 배열의 인덱스 문제를 최소화하기 위해서 사탕 게임을 진행하기 전의 상태가 연속한 사탕 부분의 최대값일 수 있으므로 현재 상태에서의 연속된 사탕의 최대 개수를..

Algorithm/문제풀이

[백준/Python] 1260번 DFS와 BFS 풀이

문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 1260번 DFS와 BFS 제출 언어: Python 풀이 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 코드 from collections import deque import sys input = sys.stdin.readline def DFS(v): #depth-first search visit2[v]=1 print(v,end=' ') for i in range(1,N+1): if visit2[i]==0 and graph[v][i]=..

ruby
'BFS' 태그의 글 목록