HackerRank Jumping on the Clouds

주어진 배열의 원소가 0이면 그 자리로 jump할 수 있고 1이면 그 자리로 jump하지 못한다. 이동은 한번에 1칸, 2칸만 가능하다. 끝까지 도달하기 위한 최소 jump 수를 구해야 한다.

2칸을 이동한다고 했을 때 배열의 끝을 초과하지 않으면서 이동하려는 자리의 값이 0이면 jumps에 1을 누적하고 i는 2를 누적한다.
1칸을 이동한다고 했을 때 배열의 끝을 초과하지 않으면서 이동하려는 자리의 값이 0이면 jumps에 1을 누적하고 i는 1을 누적한다.
1칸을 이동한다고 했을 때 배열의 끝을 초과하지 않으면서 이동하려는 자리의 값이 1이면 jumps에 1을 누적하고 i는 2를 누적한다.

jumps를 반환한다

#!/bin/python3

import math
import os
import random
import re
import sys

#
# Complete the 'jumpingOnClouds' function below.
#
# The function is expected to return an INTEGER.
# The function accepts INTEGER_ARRAY c as parameter.
#

def jumpingOnClouds(c):
    i = 0
    jumps = 0
    length = len(c)
    for v in c:
        if length >= i+3 and c[i+2] == 0:
            jumps += 1
            i += 2
        elif length >= i+2 and c[i+1] == 0:
            jumps += 1
            i += 1
        elif length >= i+2 and c[i+1] == 1:
            jumps += 1
            i += 2
    
    return jumps

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input().strip())

    c = list(map(int, input().rstrip().split()))

    result = jumpingOnClouds(c)

    fptr.write(str(result) + '\n')

    fptr.close()

좋은 웹페이지 즐겨찾기