리사의 워크북

Lisa는 방금 새 수학 워크북을 받았습니다. 통합 문서에는 장으로 그룹화된 연습 문제가 포함되어 있습니다. Lisa는 색인(장 내)이 해당 문제가 있는 페이지 번호와 같으면 문제가 특별하다고 생각합니다. Lisa의 책의 형식은 다음과 같습니다.
  • Lisa의 워크북에는 1부터 n까지 번호가 매겨진 n개의 장이 있습니다.
  • i번째 장에는 1부터 n까지 번호가 매겨진 arr[i] 문제가 있습니다.
  • 각 페이지에는 최대 k개의 문제가 포함될 수 있습니다. 한 장의 마지막 연습 페이지만 k개 미만의 문제를 포함할 수 있습니다.
  • 각각의 새 장은 새 페이지에서 시작하므로 한 페이지에 둘 이상의 장에 있는 문제가 포함되지 않습니다.
  • 페이지 번호 인덱싱이 1부터 시작합니다.

  • Lisa의 통합 문서에 대한 세부 정보가 주어졌을 때 특수 문제의 수를 셀 수 있습니까?

    예시

    arr = [4,2]
    k=3
    


    예를 들어 Lisa의 통합 문서에는 arr[1]=4 장에 대한 1 문제와 arr[2]=2 장에 대한 2 문제가 포함되어 있습니다. 각 페이지에 문제가 있을 수 있습니다k=3. 첫 번째 페이지에는 3 장에 대한 1 문제가 있습니다. 문제1는 페이지1에 있으므로 특별합니다. 페이지2에는 장1, 문제4만 포함되어 있으므로 페이지2에는 특별한 문제가 없습니다. 장2 문제가 페이지3에서 시작하고 2 문제가 있습니다. 페이지3에 문제3가 없으므로 해당 페이지에도 특별한 문제가 없습니다. 그녀의 워크북에는 특별한 문제가 있습니다.

    기능 설명
    아래 편집기에서 워크북 기능을 완성하세요. 통합 문서의 특수 문제 수를 나타내는 정수를 반환해야 합니다.

    통합 문서에는 다음 매개변수가 있습니다.
    n : 챕터 수를 나타내는 정수k : 페이지당 최대 문제 수를 나타내는 정수arr : 각 장의 문제 수를 나타내는 정수 배열

    입력 형식

    첫 번째 줄에는 두 개의 정수nk, 장 수 및 페이지당 최대 문제 수가 포함됩니다.
    두 번째 줄에는 n개의 공백으로 구분된 정수arr[i]가 포함됩니다. 여기서 arr[i]ith 장의 문제 수를 나타냅니다.

    출력 형식

    Lisa의 통합 문서에 있는 특수 문제의 수를 인쇄하십시오.

    샘플 입력

    5 3 
    4 2 6 1 10
    


    샘플 출력

    4
    


    솔루션- ### 파이썬

    def readInts():
        return map(int, raw_input().strip().split(' '))
    
    n, k = readInts()
    ts = readInts()
    
    # n = 5
    # k = 3
    # ts = [4, 2, 6, 1, 10]
    
    ans = 0
    pageNum = 1
    for chapter, problems in enumerate(ts):
        pageLeft = k
        for problemId in xrange(1, problems+1):
            if pageNum == problemId:
                ans += 1
            pageLeft -= 1
            if pageLeft == 0:
                pageLeft = k
                pageNum += 1
        if pageLeft < k:
            pageNum += 1
    
    print ans
    

    좋은 웹페이지 즐겨찾기