
문제를 살펴보면 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()
출력 형식에 한줄을 띄워줘야 하기 때문에 이에 유의하여 작성하자
'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 2920 음계(브론즈 2) - Python (1) | 2024.12.15 |
|---|---|
| [Baekjoon]백준 25501 재귀의 귀재(브론즈 2) - Python (1) | 2024.12.14 |
| [Baekjoon]백준 10870 피보나치 수 5(브론즈 2) - Python (1) | 2024.12.12 |
| [Baekjoon]백준 20920 영단어 암기는 괴로워(실버 3) - Python (0) | 2024.12.11 |
| [Baekjoon]백준 2108 통계학(실버 3) - Python (0) | 2024.12.10 |