본문 바로가기
C#/프로그래머스

[프로그래머스] 두 정수 사이의 합

by ian's coding 2025. 4. 21.
728x90
반응형

💻 프로그래머스 코딩 테스트 – 두 정수 사이의 합

📌 문제 설명

두 정수 a, b가 주어졌을 때,
a와 b 사이에 있는 모든 정수의 합을 구하는 문제입니다.

예를 들어,

  • a = 3, b = 5 → 3 + 4 + 5 = 12
  • a = 5, b = 3 → 5 + 4 + 3 = 12

처럼, 두 수의 크기에 상관없이 사이에 있는 숫자들을 모두 더한 값을 구해주면 됩니다.


✅ 제한 사항

  • a, b는 -10,000 이상 10,000 이하의 정수입니다.
  • a와 b가 같으면, 그 수 하나를 그대로 반환하시면 됩니다.

💡 어떻게 풀면 좋을까요?

이 문제는 단순히 반복문으로 숫자들을 더해도 되지만,
수학적인 공식을 활용하면 훨씬 간단하고 효율적으로 해결할 수 있어요!

🎓 등차수열의 합 공식

(첫 번째 수 + 마지막 수) × (숫자의 개수) ÷ 2

a와 b 중 어떤 수가 더 크든 상관없이
이 공식을 그대로 적용하면 정답을 구할 수 있습니다.


🧾 코드 설명 (C#)

using System;

public class Solution {
    public long solution(int a, int b) {
        // int는 오버플로우 위험이 있어 long으로 변환
        long aa = a;
        long bb = b;

        // 등차수열 합 공식 적용
        return (aa + bb) * (Math.Abs(aa - bb) + 1) / 2;
    }
}

 

🔍 코드 설명

코드설명
long aa = a; 계산 도중 오버플로우가 발생하지 않도록 long으로 변환해줍니다.
Math.Abs(aa - bb) 두 수의 차이를 절댓값으로 구해서 숫자의 개수를 계산합니다.
(aa + bb) * (차이 + 1) / 2 등차수열의 합 공식을 그대로 적용합니다.

✨ 포인트 정리

  • 반복문 없이 한 줄의 수식으로 깔끔하게 해결할 수 있어요.
  • 두 수의 크기를 비교할 필요도 없고, 코드도 아주 간단하죠.
  • 수학적인 사고를 적용하는 연습에 딱 좋은 문제예요 😊

📝 마무리

이 문제는 반복문보다는 수학 공식을 활용하는 게 훨씬 효율적입니다.
단순해 보이지만, 코드의 안정성과 정확성을 위해 형변환까지 고려한 점도 중요한 포인트예요.

728x90
반응형

댓글