본문 바로가기

Baekjoon

[Baekjoon]백준 7523 Gauß(브론즈 3) - Python

문제설명

문제를 살펴보면 n, m이 주어지고 n부터 m까지의 합을 구하면 된다

그렇다고 해서 밑의 코드처럼 단순하게 코드를 작성하면 큰 숫자를 입력했을 때 계산과정이 오래 걸린다는 것을 알것이다

N = int(input())

for i in range(N):
    start, end = map(int, input().split())
    sum = 0
    for j in range(start, end + 1):
        sum += j
    print(f'Scenario #{i+1}:')
    print(sum)

예제의 세번째 숫자를 입력해보면 꽤 오랜 시간 정답이 출력되지 않음을 확인할 수 있다

이 문제를 풀 때는 수학 공식이 쓰이게 되는데, n부터 m까지의 합은

n부터 m까지의 개수 * n과 m의 합 / 2 로 나타낼 수 있다

이를 이용하여 코드를 작성하면 된다

N = int(input())

for i in range(N):
    start, end = map(int, input().split())
    sum = (end - start + 1) * (start + end) // 2
    print(f'Scenario #{i+1}:')
    print(sum)
    print()

출력 형식에 한줄을 띄워줘야 하기 때문에 이에 유의하여 작성하자