728x90
반응형
처음에는 왼쪽으로 갔다가, 인덱스를 벗어나면 다시 시작점으로 돌아온다. 이때는 오른쪽부터 간다. (왼쪽갔다 막히면 오른쪽으로 간다.)
방문여부 배열 [false, false, false, false, false]을 만들어서 이미 방문한 곳이라면 true로 바꿔준다.
근데 문제가 너무 억지같아서 이해가 잘가지 않았다.
그리고 input 받을 때 런타임에러가 계속 나서 찾아보았다. 입력 방식을 다르게 해야한다는걸 알았다.
실버?? 문제부터는 input 받는 방식에도 평가 기준에 영향이 있는거같음.
전체코드
import java.util.LinkedList
import java.util.Queue
import java.util.Scanner
import kotlin.math.abs
fun main() {
val scanner = Scanner(System.`in`)
val n = scanner.nextInt()
val inputArray = IntArray(n) { scanner.nextInt() }
val start = scanner.nextInt() - 1
val visited = BooleanArray(n)
fun bfs(start: Int) {
val queue: Queue<Int> = LinkedList()
queue.add(start)
visited[start] = true
while (queue.isNotEmpty()) {
val currentIndex = queue.poll()
val currentValue = abs(inputArray[currentIndex])
val leftIndex = currentIndex - currentValue
if (leftIndex >= 0 && !visited[leftIndex]) {
visited[leftIndex] = true
queue.add(leftIndex)
}
val rightIndex = currentIndex + currentValue
if (rightIndex < n && !visited[rightIndex]) {
visited[rightIndex] = true
queue.add(rightIndex)
}
}
}
bfs(start)
val answer = visited.count { it }
println(answer)
}
어렵다..
728x90
반응형
'알고리즘' 카테고리의 다른 글
[Kotlin] 백준 1926 그림 - BFS를 이용하여 문제 풀기 (0) | 2025.01.19 |
---|