너비우선탐색(BFS;Breadth-First Search)
·
Computer Science/Algorithm
BFS 란?너비우선탐색(BFS;Breadth-First Search) 알고리즘은 그래프에서 시작 노드에 인접한 노드부터 탐색하는 알고리즘이다.주로 선입선출 방식은 큐(Queue) 자료구조를 활용하여 구현된다.모든 간선의 비용이 동일한 조건에서 최단거리를 구하는 문제에 효과적이다.  BFS의 동작 방식0. 다음 방문 노드를 저장할 큐와 방문 처리를 위한 visited 변수가 필요하다.1. 시작 노드를 큐에 삽입하고 방문 처리 한다.2. 큐가 비어있지 않다면(= 다음 방문 노드가 남아 있다면) 아래 내용을 반복한다.큐의 첫 번째 노드를 꺼내어 현재 노드로 설정.현재 노드 방문 처리.인접 노드를 확인하고, 인접 노드가 아직 방문 되지 않았다면 큐에 삽입.   BFS 구현 예제[백준/Silver II] 알고리즘..
[프로그래머스/level 4] 지형 이동 - 62050
·
코딩 테스트 정복기/프로그래머스
[level 4] 지형 이동 - 62050문제 링크성능 요약메모리: 97.8 MB, 시간: 82.65 ms구분코딩테스트 연습 > Summer/Winter Coding(2019)채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 12월 18일 01:09:54문제 설명N x N 크기인 정사각 격자 형태의 지형이 있습니다. 각 격자 칸은 1 x 1 크기이며, 숫자가 하나씩 적혀있습니다. 격자 칸에 적힌 숫자는 그 칸의 높이를 나타냅니다.이 지형의 아무 칸에서나 출발해 모든 칸을 방문하는 탐험을 떠나려 합니다. 칸을 이동할 때는 상, 하, 좌, 우로 한 칸씩 이동할 수 있는데, 현재 칸과 이동하려는 칸의 높이 차가 height 이하여야 합니다. 높이 차가 height 보다 많이 나는 경우..
[백준/Silver II] A → B - 16953
·
코딩 테스트 정복기/백준
[Silver II] A → B - 16953문제 링크성능 요약메모리: 22564 KB, 시간: 204 ms분류너비 우선 탐색, 그래프 이론, 그래프 탐색, 그리디 알고리즘제출 일자2024년 12월 9일 17:18:21문제 설명정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.2를 곱한다.1을 수의 가장 오른쪽에 추가한다.A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.입력첫째 줄에 A, B (1 ≤ A 9)가 주어진다.출력A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.     풀이 및 코드연산은 2를 곱하거나 1을 더하거나 원래의 값이 더 커질 수 밖에 없다.즉, 원래의 값이 B보다 크면 탐색을 이어갈 필요가 없다...
[프로그래머스/level 3] [카카오 인턴] 경주로 건설 - 67259
·
코딩 테스트 정복기/프로그래머스
[level 3] [카카오 인턴] 경주로 건설 - 67259문제 링크성능 요약메모리: 84.8 MB, 시간: 31.59 ms구분코딩테스트 연습 > 2020 카카오 인턴십채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 11월 26일 00:18:08문제 설명건설회사의 설계사인 죠르디는 고객사로부터 자동차 경주로 건설에 필요한 견적을 의뢰받았습니다.제공된 경주로 설계 도면에 따르면 경주로 부지는 N x N 크기의 정사각형 격자 형태이며 각 격자는 1 x 1 크기입니다.설계 도면에는 각 격자의 칸은 0 또는 1 로 채워져 있으며, 0은 칸이 비어 있음을 1은 해당 칸이 벽으로 채워져 있음을 나타냅니다.경주로의 출발점은 (0, 0) 칸(좌측 상단)이며, 도착점은 (N-1, N-1) 칸(..
[백준/Gold V] 숨바꼭질 3 - 13549
·
코딩 테스트 정복기/백준
[Gold V] 숨바꼭질 3 - 13549문제 링크성능 요약메모리: 29348 KB, 시간: 324 ms분류0-1 너비 우선 탐색, 너비 우선 탐색, 데이크스트라, 그래프 이론, 그래프 탐색, 최단 경로제출 일자2024년 11월 22일 18:28:50문제 설명수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구..
[프로그래머스/level 2] 미로 탈출 - 159993
·
코딩 테스트 정복기/프로그래머스
[level 2] 미로 탈출 - 159993문제 링크성능 요약메모리: 79.6 MB, 시간: 14.16 ms구분코딩테스트 연습 > 연습문제채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 11월 21일 22:13:10문제 설명1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니..
[프로그래머스/level 2] 게임 맵 최단거리 - 1844
·
코딩 테스트 정복기/프로그래머스
[level 2] 게임 맵 최단거리 - 1844문제 링크성능 요약메모리: 54.6 MB, 시간: 19.49 ms구분코딩테스트 연습 > 깊이/너비 우선 탐색(DFS/BFS)채점결과정확성: 69.9효율성: 30.1합계: 100.0 / 100.0제출 일자2024년 11월 20일 04:08:25문제 설명ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다.지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다.위 그림에서 검은색 부분은 벽..
[백준/Silver II] 알고리즘 수업 - 너비 우선 탐색 1 - 24444
·
코딩 테스트 정복기/백준
[Silver II] 알고리즘 수업 - 너비 우선 탐색 1 - 24444문제 링크성능 요약메모리: 172676 KB, 시간: 1188 ms분류너비 우선 탐색, 그래프 이론, 그래프 탐색, 정렬제출 일자2024년 11월 14일 20:55:56문제 설명오늘도 서준이는 너비 우선 탐색(BFS) 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자.N개의 정점과 M개의 간선으로 구성된 무방향 그래프(undirected graph)가 주어진다. 정점 번호는 1번부터 N번이고 모든 간선의 가중치는 1이다. 정점 R에서 시작하여 너비 우선 탐색으로 노드를 방문할 경우 노드의 방문 순서를 출력하자.너비 우선 탐색 의사 코드는 다음과 같다. 인접 정점은 오름차순으로 방문한다.bf..