728x90
https://www.acmicpc.net/problem/1260
문제 접근
기본적으로 dfs와 bfs를 구현하는 문제입니다.
처음 dfs와 bfs를 연습할때 구현하는 방법을 연습하기 좋아보입니다.
정답코드
import java.util.*
var node = 0
var g = Array(node+1){ArrayList<Int>()}
val check = BooleanArray(1001)
var que: Queue<Int> = LinkedList()
//graph : 인접리스트로 구현
fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
node = nextInt()
val edge = nextInt()
val start = nextInt()
g = Array(node+1){ArrayList<Int>()}
for (i in 1..node){
g[i] = ArrayList()
}
//입력된 값 그래프에 연동
for (i in 0 until edge){
val a = nextInt()
val b = nextInt()
graph(a,b)
}
dfs(start)
check.fill(false)
println()
bfs(start)
}
fun graph(i : Int, j:Int){
//방향, 가중치 없음
g[i].add(j)
g[j].add(i)
}
//재귀
fun dfs(start:Int){
check[start] = true
print("$start ")
for (i in 1..node){
if (g[start].contains(i) && !check[i]){
dfs(i)
}
}
}
//큐
fun bfs(start:Int){
check[start] = true
que.add(start)
while (!que.isEmpty()){
val start = que.poll()
print("$start ")
for (i in 1..node){
if (g[start].contains(i) && !check[i]){
check[i] = true
que.add(i)
}
}
}
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 9095번 - 1, 2, 3 더하기 (0) | 2023.02.08 |
---|---|
백준 2606-바이러스(Kotlin) (0) | 2023.02.06 |
백준 2576 색종이-2(Kotlin) (0) | 2023.02.02 |
백준 2246 - 콘도 선정(Kotlin) (0) | 2023.01.31 |
백준 1051-숫자 정사각형(Kotlin) (0) | 2023.01.31 |