[백준][Python] 2355. 시그마
Bronze Ⅱ 🔗2355. 시그마
📝문제 요약
문제 설명
두 정수 A와 B가 주어졌을 때, 두 정수 사이에 있는 수의 합을 구하는 프로그램을 작성하시오. 사이에 있는 수들은 A와 B도 포함한다.
입력
첫째 줄에 두 정수 A, B가 주어진다. (-2,147,483,648 ≤ A, B ≤ 2,147,483,647)
출력
첫째 줄에 답을 출력한다. (-2,147,483,648 ≤ 답 ≤ 2,147,483,647)
✏️문제 풀이
-
처음에 이렇게 문제를 풀었더니, 메모리 초과
x, y = input().split() my_list = list(range(int(x),int(y)+1)) print(sum(my_list))
- 간단하게 풀어보려고 해도 답이 안보여서 등차수열 공식을 이용하였다.
- 등차수열의 합 : $s_n = \frac{n(a+l)}{2}$(a : 첫째항, l : n항의 수, n: 항 수)
- x, y를 입력 :
map(int, input().split())
- $\frac{(y-x+1)(x+y)}{2}$ > n항은 큰값에서 작은값을 빼주고 1을 더한다. ```python x, y = map(int, input().split())
sum = ((y-x+1)*(x+y))/2
print(int(sum)) ```
- 틀림!
- x와 y의 사이라고 했지 두 값 중 어떤 것이 더 큰지 모르니, 선언 해준다.
sum = ((y-x+1)*(x+y))/2
»sum = ((max_n-min_n+1)*(x+y))/2
max_n = max(x,y)
: 둘 중 큰 수min_n = min(x,y)
: 둘 중 작은수
💯제출 코드
x, y = map(int, input().split())
max_n = max(x,y)
min_n = min(x,y)
sum = ((max_n-min_n+1)*(x+y))/2
print(int(sum))
댓글남기기