Post

[SWEA] 3408. 세가지 합 구하기(python)

📌문제

Alt text

💪아이디어

문제 자체는 수의 합을 어떻게 구하느냐, 배열의 규칙을 찾는다면 어렵지 않은 문제였다. 처음에 이문제를 누적합으로 접근했지만 최대 범위가 1e9여서 런타임 에러가 발생하였다. 수의 합 공식을 사용하여 문제를 풀었다. 누적합으로 푼 알고리즘도 밑에 적어둔다.

🥂코드

수의 합공식

1
2
3
4
5
6
7
T=int(input())
for tc in range(1,T+1):
    N=int(input())
    s1=N*(N+1)//2
    s2=N**2
    s3=N*(N+1)
    print('#{} {} {} {}'.format(tc,s1,s2,s3))

누적합

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for i in range(1,max(input_val)*2+1,2):
    odd.append(odd[-1]+i)
    even.append(even[-1]+(i+1))

for tc,sum_val in enumerate(input_val):
    s1=even[sum_val//2]
    if sum_val%2:
        s1+=+odd[sum_val//2+1]
    else:
        s1+=+odd[sum_val//2]
    s2=odd[sum_val]
    s3=even[sum_val]
    print('#{} {} {} {}'.format(tc+1,s1,s2,s3))
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.