각 1인 인덱스에서 시작한 일수를 계산한 후, 서로 비교해 최소 일수를 구한다.
t = int(input())
for i in range(1, t + 1):
n = int(input()) # 목표 클래스수
days = list(map(int, input().split()))
onelist = []
for a in range(len(days)): # 1인 인덱스를 저장
if days[a] == 1:
onelist.append(a)
daylist = []
for start in onelist: # 각 1인 인덱스에서 시작해 작은 일수를 구함
day, cnt = 0, 0 # 걸린 일수, 들은 클래스 수
while cnt != n:
for a in range(start, 7): # 먼저, 1인 인덱스에서 시작
if days[a] == 1:
cnt += days[a]
day += 1
if cnt == n: # 목표 클래스수에 도달하면 break
break
start = 0 # 토요일(6)까지 목표 클래스수를 채우지 못했다면, 다시 일요일(0)부터 계산
daylist.append(day) # 목표 클래스수까지 걸린 일수를 추가
print(f"#{i} {min(daylist)}")
간단해 보였는데 예상외로 바로 풀리진 않았다.
'무조건 일요일에서 시작하는 것이 아니다' 라는 것이 중요 포인트이다.
만약 1 0 0 0 0 0 1
이면, 토요일부터 시작해 최소 일수가 2일이어야 한다.