통과 코드

T = int(input())

n = [int(input()) for _ in range(T)]

for q in range(T):
    s2 = n[q]**2
    s3 = n[q]**2+n[q]
    if n[q]%2 == 0:
        s1 = (n[q]+1)*(n[q]//2)
        print('#{} {} {} {}'.format(q + 1, s1, s2, s3))

    else:
        s1 = (n[q] + 1) * (n[q] // 2) + (n[q] + 1) // 2
        print('#{} {} {} {}'.format(q+1,s1,s2,s3))

그 외

시간 초과가 발생한 초기 코드

 

T = int(input())

for tc in range(1,1+T):
    N = int(input())

    S1 = 0
    for q in range(1,N+1):
        S1 += q
    S2 = N**2
    S3 = S2+N

    print('#{} {} {} {}'.format(tc,S1,S2,S3))

문제 풀이의 아이디어

 

1. S1은 1 + 2 + 3 + 4 = (1+4)*(4//2) 이런 형태로 구했음

# for문 돌려서 구하고 싶지 않았기 때문

 

2. S2는 1 = 1**2, 1 + 3 = 2**2, 1 + 3 + 5 = 3**2

 

3. S3는 S2에 n만큼 더하면 됨

 

4. 시간 초과가 발생한 코드의 원인은 s1을 구할 때 for문을 사용했기 때문인듯

# n은 최대 10**9이고 이는 10억이나 되는 숫자다.

# 10억번을 호출하는 행동이 반복되어서 시간 초과가 발생한 것 같다.

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다