본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 두 정수 사이의 합(C#)

by jyppro 2023. 7. 25.

두 정수 사이의 합

오늘은 "두 정수 사이의 합" 문제를 풀어보도록 하겠습니다. 바로 문제를 확인해 보겠습니다.

 

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

 

입출력 예

a b return
3 5 12
3 3 3
5 3 12

 

시작 코드

public class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        return answer;
    }
}

 

나의 풀이

public class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        if(a < b) { for(int i = a; i <= b; i++) { answer += i; } }
        else { for(int i = a; i >= b; i--) { answer += i; } }
        if(a == b) { return a; }
        return answer;
    }
}

코드의 진행 흐름부터 살펴보도록 하겠습니다. int형의 정수 두개 a,b가 주어지고 long타입의 answer가 선언된 채로 시작됩니다. 여기에 if문으로 a가 b보다 작으면 for문을 실행합니다. for문은 a부터 b까지 1씩 더하며 answer에 i값을 계속 더해줍니다. 만약 if문을 충족하지 않는다면 a부터 b까지 1씩 줄이면서 answer에 i를 더해줍니다. 그리고 a와 b가 같다면 a를 리턴해줍니다. 일반적인 경우에는 answer를 리턴해줍니다.

 

이번문제는 딱히 새롭게 등장하는 코드는 없었습니다. 문제사항을 보면 단순히 두 정수 a,b가 주어지고 두 정수 사이의 수를 전부 더한값을 리턴해주면 됩니다. 두 정수의 사잇값을 구해야 하므로 어떤 수가 더 큰지 먼저 판별해줍니다. a가 b보다 작다면 a부터 b까지 1씩 더해가며 정답에 합산시키고, b가 a보다 작다면 b부터 a까지 더해주어야 하는데 위에 작성된 for문에서는 여전히 a부터 b까지 향하는 대신 1을 더해주며 가지않고 빼주며 가도록 하였습니다. 그리고 a와 b가 같다면 사잇값이 존재하지 않기 때문에 바로 두 정수 중 하나를 리턴해주면 됩니다.

 

<NEXT>

오늘은 "두 정수 사이의 합" 문제를 풀어보았습니다. 다음에는 "콜라츠 추측" 문제를 풀어보도록 하겠습니다. 감사합니다.