yeonsssu26 / algorithm-study

algorithm study
0 stars 0 forks source link

BOJ 3060 : error #21

Closed yeonsssu26 closed 2 years ago

yeonsssu26 commented 3 years ago
######### error : 시간초과

T = int(input())

for x in range(T):
    N = int(input())
    food = list(map(int, input().split()))
    yesterday = [0 for i in range(6)]
    for i in range(6):
        yesterday[i] = food[i]

    ans = 1
    while 1:
        for i in range(6):
            N -= food[i]

        if N < 0:
            print(ans)
            break

        else:
            ans += 1
            for i in range(6):  # 다음날 먹을 양 갱신
                if i < 3:
                    food[i] = (
                        yesterday[i]
                        + yesterday[i - 1]
                        + yesterday[i + 1]
                        + yesterday[i + 3]
                    )
                else:
                    if i == 5:
                        food[i] = (
                            yesterday[i]
                            + yesterday[i - 1]
                            + yesterday[0]
                            + yesterday[i + 3 - 5]
                        )

                    else:
                        food[i] = (
                            yesterday[i]
                            + yesterday[i - 1]
                            + yesterday[i + 1]
                            + yesterday[i + 3 - 5]
                        )

시간초과 뜸ㅠㅠ 하긴,, 반복문이 겹겹이 많긴 하지 🙄

yeonsssu26 commented 3 years ago

구글링을 해보니 이 문제의 정답률이 낮은 이유가 int 범위를 초과해서라고 한다. 또한, 규칙이 있는 경우에는 나머지 연산으로 계산할 수 있다.