ALGORITHM/PYTHON

백준 BAEKJOON 17206번 준석이의 수학 숙제 [PYTHON/파이썬]

칼코
반응형

 

 

 

 

 

백준 BAEKJOON 17206번 준석이의 수학 숙제 [PYTHON/파이썬]


<문제 출처> (BRONZE Ⅰ)

https://www.acmicpc.net/problem/17206

 

17206번: 준석이의 수학 숙제

10 이하의 3 또는 7의 배수는 3, 6, 7, 9가 있다. 21 이하의 3 또는 7의 배수는 3, 6, 7, 9, 12, 14, 15, 18, 21이 있다.

www.acmicpc.net

 

 

 

 

 

 

<코드>

N의 조건을 보면 10 이상 80000 이하이다.

그냥 생각한 대로 코드를 짜면 시간초과가 난다.

 

먼저 리스트의 크기를 80001 만큼 만든 후에

3으로 나눠지거나 7로 나눠지는 부분이 있으면

배수들의 합을 리스트에 담아야한다.

메모이제이션을 활용하는 것이다.

 

 

 

 

 

<코드>

T = int(input())
N = list(map(int, input().split()))

lst = [0] * 80001
ans = 0

for i in range(80001):
    if i % 3 == 0 or i % 7 == 0:
        ans += i
    lst[i] = ans


for j in N:
    print(lst[j])

 

 

 

 

 

 

 

반응형