BFS

문제https://www.acmicpc.net/problem/16918   풀이이 문제를 처음 봤을 때는 4가지 경우가 반복되는 문제라고 생각해 구현을 해봤다.하지만, 통과가 되지 않았으므로 매 시간마다 변화를 주는 방식으로 풀이했다. 문제 풀이는 흠... 그냥 간단한 BFS 문제이다. 4방향의 상태를 체크하며 폭탄이 폭발한다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' '));const [r, c, n] = input.shift().map(Num..
문제https://level.goorm.io/exam/195694/%EB%B0%9C%EC%A0%84%EA%B8%B0/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io 풀이해당 문제는 그래프 탐색 문제이며 각 집이 연결되어있는지 확인하는 문제이다. 어떻게 보면 DFS 로 풀면 될거 같지만, DFS로 풀이를 진행하면 각 노드에서 재귀적으로 4방향씩 호출되어 시간초과 오류를 만날 수도 있다.... 코드const readline = require('readline');let rl = readline.createInterface({ input: process.stdin, output: process.stdout,});let n = null;l..
문제https://level.goorm.io/exam/167345/%EB%8B%A8%ED%92%8D%EB%82%98%EB%AC%B4/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io  풀이이 문제는 백준의 연구소 문제 시리즈에서 많이 풀었던 그래프 탐색 문제이다. 그래프 탐색을 할 때 큐를 이용해 탐색해야 하는 단풍이 다 열리지 않은 지역을 탐색했는데, 지역의 위치를 구하는데 조심해야 하는 부분은 아침 기준으로 구해야 하기에 while 문에서 계속해서 큐에 위치를 qush해주면 안된다. 위의 조건을 조심해서 풀면 잘 풀 수 있지만, 나는 한가지 경우의 수를 놓쳤다.바로 모두 완벽하게 열린 경우인데, 즉 필드에 있는 모든 값이 0인 경..
문제https://www.acmicpc.net/problem/17779  풀이구현 문제이며, BFS 알고리즘을 이용해 5지역의 영역을 이동 및 확장해가며 답을 도출하는 풀이이다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ').map(Number));const [n] = input.shift();const map = input.slice();const total = map.reduce((acc, cur) => { return acc + cur.r..
문제https://www.acmicpc.net/problem/17142  풀이본 문제는 이전에 풀이했던 연구소 문제의 다른 버전이며, 주어지는 수 만큼 바이러스를 활성화 했을 때 모든 공간에 바이러스가 확산되는 시간의 최소값을 구하는 문제다. 해당 문제에서는 조심해야할 포인트가 있다.바이러스가 확산될 때 비활성 바이러스는 넘어갈 수 있다.(개인적으로 햇갈렸던 부분) 활성화할 바이러스의 조합을 정하는 로직 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e.split(' ..
문제https://www.acmicpc.net/problem/16234 풀이이 문제는 BFS를 학습하기 위해 풀어본 문제이며 이 문제를 통해 BFS를 조금 알기 시작했다.... 문제에서는 각 칸마다 연합을 연결할 수 있는 나라인지 확인한 뒤 계속 인접 칸으로 이동해야 한다. 이러한 풀이 방식에서 인접 노드 탐색을 진행하는 BFS를 적용해야한다. bfs 함수를 실행하는 이중 for문은 각 칸마다 연합을 만들 수 있는지 검증하는 경우를 구현하기위해 사용했고, 해당 노드가 방문했던 노드임을 나타내는 visited 배열을 생성했으며 이 배열을 bfs 함수에 전달해 함수 내부에서 방문 여부를 확인해 방문 하지 않고, 함수에서는 상하좌우 방향의 노드와 현 위치의 노드 간의 차이가 문제에서 주어진 범위 안에 있다면 ..
58청춘
'BFS' 태그의 글 목록 (2 Page)