고짬기록

SWEA 3408 세 가지 합 구하기 Python 본문

알고리즘 공부 ⌨/SWEA 03

SWEA 3408 세 가지 합 구하기 Python

고짬이 2021. 5. 10. 23:57

문제 주소 및 출처 ❕

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWEbPukqySUDFAWs&categoryId=AWEbPukqySUDFAWs&categoryType=CODE&problemTitle=3408&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제 : D3 3408 세 가지 합 구하기

 

언어 : Python

 

문제 ❓❗


※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.


N을 입력 받아 다음의 세 가지 합을 구하는 프로그램을 작성하라.

S1 = 양의 정수 중에서 작은 순서대로 N개의 합.

S2 = 양의 정수 중 홀수인 것들 중에서 작은 순서대로 N개의 합.

S3= 양의 정수 중 짝수인 것들 중에서 작은 순서대로 N개의 합.

예를 들어 N = 5의 입력이 들어왔을 경우,

S1 = 1 + 2 + 3 + 4 + 5,

S2 = 1 + 3 + 5 + 7 + 9,

S3 = 2 + 4 + 6 + 8 + 10 이다.



[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 자연수 N(1 ≤ N ≤ 109)가 주어진다.


[출력]

각 테스트 케이스마다 S1, S2, S3을 공백으로 구분하여 출력한다.

 

 

💬 나의 코드

😭 1차 코드 -> runtime error

T = int(input())
for TC in range(1, T+1):
    N = int(input())
    # 양의 정수 중에서 작은 순서대로 N개의 합
    S1 = 0
    for x in range(1, N+1):
        S1 += x
    # 양의 정수 중 홀수인 것들 중에서 작은 순서대로 N개의 합
    S2 = 0
    for x in range(1, 2*N+1, 2):
        S2 += x
    # 양의 정수 중 짝수인 것들 중에서 작은 순서대로 N개의 합
    S3 = 0
    for x in range(2, 2*(N+1), 2):
        S3 += x
    print("#{} {} {} {}".format(TC, S1, S2, S3))

 

😍 PASS 코드

T = int(input())
for TC in range(1, T+1):
    N = int(input())
    # 양의 정수 중에서 작은 순서대로 N개의 합
    S1 = ((N+1)*N) // 2
    # 양의 정수 중 홀수인 것들 중에서 작은 순서대로 N개의 합
    S2 = N ** 2
    # 양의 정수 중 짝수인 것들 중에서 작은 순서대로 N개의 합
    S3 = (N+1)*N
    print("#{} {} {} {}".format(TC, S1, S2, S3))

 

Tip 💕


등차수열 공식 이용하면 시간이 줄어듬❣

 

Comments