본문 바로가기
Algorithm

[구현/수학] 백준 2355 시그마 - 파이썬(Python)

by jangThang 2022. 3. 3.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2355번: 시그마

    첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)

    www.acmicpc.net

     

     

    2. 문제 풀이

     A부터 B까지 등차가 1인 등차수열의 합을 구하는 문제입니다.

     

    (B-A+1) * (A+B) / 2

     A부터 B까지의 등차수열의 합은 위 공식으로 구할 수 있습니다. 이 공식과 유명한 가우스의 일화가 있죠. 초등학교 때 이 공식을 생각해내서, 1부터 100까지 덧셈을 단숨에 계산했다는...

     맨 앞과 맨 뒤를 합한 값은 한 칸씩 안쪽으로 이동해도 똑같습니다. 1+100, 2+99, 3+98... (등차수열이기 때문에)

     따라서 두 수의 합을 등차수열의 절반 길이만큼만 곱해주면 쉽게 구할 수 있습니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    #1~100까지는 5500. 100/2*(100+1)
    A, B = map(int, input().split())
    if A > B:
        A, B = B, A
    print((B-A+1)*(A+B)//2)

     당연한 얘기지만, for문으로 1씩 올리면서 구하면 시간초과가 납니다.

     또, 입력형식에 B가 A보다 크다는 제한이 없습니다. B가 만약에 더 작으면 등차가 -1인 수열이므로, 두 수를 바꿔줘야 합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글