반응형
[ Contents ]
1. 문제 (링크 참조)
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인 수열이므로, 두 수를 바꿔줘야 합니다.
반응형
'Algorithm' 카테고리의 다른 글
[구현/수학] 백준 6064 카잉 달력 - 파이썬(Python) (0) | 2022.03.04 |
---|---|
[자료구조/해시] 백준 4358 생태학 - 파이썬(Python) (0) | 2022.03.04 |
[구현/문자열] 백준 18406 럭키 스트레이트 - 파이썬(Python) (0) | 2022.03.03 |
[구현/문자열] 백준 17609 회문 - 파이썬(Python) (0) | 2022.03.02 |
[구현/문자열] 백준 1254 팰린드롭 만들기 - 파이썬(Python) (0) | 2022.03.02 |
댓글