-
[백준/그래프탐색] 1743번. 음식물피하기(JavaScript)🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/💛 백준 2021. 8. 30. 20:36
문제설명
https://www.acmicpc.net/problem/1743
2667번 단지번호붙이기와 비슷하게 푸는 DFS문제이다.
문제풀이
const fs = require("fs"); let input = fs.readFileSync("../test.txt").toString().split("\n"); let NMK = input.shift().split(' ').map(el => parseInt(el, 10)); const N = NMK.shift(); const M = NMK.shift(); const K = NMK.shift(); let graph = Array.from(new Array(N), () => new Array(M).fill(0)); for (let i = 0; i < K; i++) { const [row, col] = input[i].split(' ').map(el => parseInt(el, 10) - 1); graph[row][col] = 1; // 음식물 쓰레기가 있는 곳을 1이라 표기 } let count = 0; const dfs = (i, j) => { const dx = [1, 0, -1, 0]; const dy = [0, 1, 0, -1]; if (rangeCheck(i, j) && graph[i][j] === 1) { graph[i][j] = 0; //방문처리 count += 1; for (let k = 0; k < dx.length; k++) { dfs(i + dx[k], j + dy[k]); } } } const rangeCheck = (i, j) => { if (i >= 0 && i < N && j >= 0 && j < M) { return true; } else return false; } const solution = () => { let trashCnt = []; for (let i = 0; i < N; i++) { for (let j = 0; j < M; j++) { if (graph[i][j] === 1) { // 음식물 쓰레기가 있는 곳이면 dfs탐색 dfs(i, j); trashCnt.push(count); count = 0; } } } trashCnt.sort((a, b) => b - a); //오름차순 정렬 return trashCnt[0]; } console.log(solution());
'🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 💛 백준' 카테고리의 다른 글
[백준/알고리즘기초1] 자료구조1. 9012번 괄호(JavaScript) (1) 2021.10.12 [백준/알고리즘기초1] 자료구조1. 10828번 스택(JavaScript) (0) 2021.10.10 [백준/완전탐색] 5618번. 공약수(JavaScript) (0) 2021.08.02 [백준/최소 스패닝 트리] 1197번. 최소 스패닝 트리, 1922번 네트워크 연결(Python) (0) 2021.07.30 [백준/우선순위큐,힙] 2696번. 중앙값 구하기(Python) (0) 2021.07.28