LeetCode in Kotlin

3522. Calculate Score After Performing Instructions

Medium

You are given two arrays, instructions and values, both of size n.

You need to simulate a process based on the following rules:

The process ends when you either:

Return your score at the end of the process.

Example 1:

Input: instructions = [“jump”,”add”,”add”,”jump”,”add”,”jump”], values = [2,1,3,1,-2,-3]

Output: 1

Explanation:

Simulate the process starting at instruction 0:

Example 2:

Input: instructions = [“jump”,”add”,”add”], values = [3,1,1]

Output: 0

Explanation:

Simulate the process starting at instruction 0:

Example 3:

Input: instructions = [“jump”], values = [0]

Output: 0

Explanation:

Simulate the process starting at instruction 0:

Constraints:

Solution

class Solution {
    fun calculateScore(instructions: Array<String>, values: IntArray): Long {
        var ans: Long = 0
        val seen = BooleanArray(instructions.size)
        var pos = 0
        while (pos >= 0 && pos < instructions.size && !seen[pos]) {
            seen[pos] = true
            if (instructions[pos][0] == 'a') {
                ans += values[pos].toLong()
                pos++
            } else {
                pos += values[pos]
            }
        }
        return ans
    }
}