candiesCount[i]가 i번째 유형의 사탕 수를 나타내는 양수 값 candiesCount의 배열이 있다고 가정합니다. 또한 query[i]에 세 개의 매개변수[favoriteType_i, FavoriteDay_i, dailyCap_i]가 있는 쿼리라는 또 다른 배열이 있습니다. 몇 가지 규칙이 있습니다:
-
0일차부터 사탕 먹기 시작합니다.
-
우리는 이전의 i-1 유형의 사탕을 모두 먹지 않는 한 유형 i의 사탕을 먹을 수 없습니다.
-
우리는 그것을 모두 먹을 때까지 하루에 적어도 하나의 사탕을 먹어야 합니다.
이러한 규칙을 유지하려면 각 쿼리 결과에 대해 부울 값의 배열을 만들어야 하며 어떤 날에도 dailyCap_i 캔디 이상을 먹지 않고 favoriteDay_i 형식의 캔디를 먹을 수 있으면 i 번째 항목이 참입니다. 규칙 2를 따르면 같은 날 다양한 종류의 사탕을 먹을 수 있습니다.
따라서 입력이 candiesCount =[7,4,5,3,8], 쿼리 =[[0,2,2],[4,2,4],[2,13,100]]인 경우 출력은
때문에 [true,false,true]가 됩니다.-
0일차와 1일차에 0형 사탕을 2개 먹으면, 0일차에 0형 사탕을 먹습니다.
-
우리는 매일 최대 4개의 사탕을 먹을 수 있습니다. 우리가 매일 4개의 사탕을 먹으면 0일에는 0종 사탕을 4개, 1일에는 0종 4개, 1종 사탕을 먹게 됩니다. 그러면 2일에는 1종, 2종 4개만 먹을 수 있습니다. 사탕이므로 2일차에는 유형 4의 사탕을 먹을 수 없습니다.
-
우리는 매일 1개의 사탕을 먹을 수 있으며, 13일차에 유형 2의 사탕을 먹을 것입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
sumcandy :=단일 요소가 있는 목록 candiesCount[0]
-
인덱스:=1
-
동안 인덱스
-
sumcandy의 끝에 (sumcandy[index-1] + candiesCount[index]) 삽입
-
인덱스 :=인덱스 + 1
-
-
sumcandy 끝에 0 삽입
-
res:=새 목록
-
쿼리에서 각각에 대해 수행
-
유형:=각[0]
-
일:=각[1]
-
cap:=각[2]
-
day+1> sumcandy[typ] 또는 (day+1)*cap <=sumcandy[typ-1]이면
-
res의 끝에 False 삽입
-
-
그렇지 않으면
-
res의 끝에 True 삽입
-
-
-
반환 해상도
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(candiesCount, queries): sumcandy = [candiesCount[0]] index=1 while index < len(candiesCount): sumcandy.append(sumcandy[index-1] + candiesCount[index]) index+=1 sumcandy.append(0) res=[] for each in queries: typ=each[0] day=each[1] cap=each[2] if day+1 > sumcandy[typ] or (day+1)*cap <= sumcandy[typ-1]: res.append(False) else: res.append(True) return res candiesCount = [7,4,5,3,8] queries = [[0,2,2],[4,2,4],[2,13,100]] print(solve(candiesCount, queries))
입력
[7,4,5,3,8], [[0,2,2],[4,2,4],[2,13,100]]
출력
[True, False, True]