[SWEA] 3408. 세가지 합 구하기(python)
📌문제
💪아이디어
문제 자체는 수의 합을 어떻게 구하느냐, 배열의 규칙을 찾는다면 어렵지 않은 문제였다. 처음에 이문제를 누적합으로 접근했지만 최대 범위가 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.