image

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))

댓글남기기