Algorithm, Problem Solving/codeforces

[codeforces][Kotlin] 500A - New Year Transportation

태오님 2023. 4. 2.

목차

     

    문제 정보

    https://codeforces.com/problemset/problem/500/A

     

    Problem - 500A - Codeforces

     

    codeforces.com

    난이도 : A

    유형 : bruteforce, graph

    시간 : O(n)


    문제 풀이

    cell 사이마다 포탈이 있는 구조이다.

    cell portal cell portal cell portal cell portal cell

    현재 셀 옆에 있는 포탈만 사용할 수 있고 역행은 안된다.

     

    포탈 사용)

    현재 cell위치 + portal의 값 => 해당 값의 cell로 이동 => 현재 cell의 오른쪽의 포탈 이용 => ... 반복


    코드

    import java.io.BufferedReader
    import java.io.InputStreamReader
    import java.util.StringTokenizer
    
    
    fun solution() = with(BufferedReader(InputStreamReader(System.`in`))) {
        var st = StringTokenizer(kotlin.io.readLine())
        var n = st.nextToken().toInt()
        var t = st.nextToken().toInt()
    
        var portals = IntArray(n - 1)
        st = StringTokenizer(readLine())
        for (i in 0 until n - 1) {
            portals[i] = st.nextToken().toInt()
        }
    
        var cur = 1
        var idx = 0;
        while (cur < n) {
            cur += portals[idx]
    
            if (cur == t) {
                println("YES")
                return
            }
    
            idx = cur - 1;
        }
    
        println("NO")
    }
    
    fun main() {
        solution()
    }

    댓글