초보 개발자의 이야기, 릿허브

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

코딩테스트/📘 프로그래머스 (programmers)

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

릿99 2021. 8. 12. 16:58
728x90
반응형
1. 문제이해

코딩테스트 연습 - 두 정수 사이의 합 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 두 정수 사이의 합

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

programmers.co.kr

 

주어진 두 정수 사이의 수들의 합을 구하여 반환하는 알고리즘을 구하는것이 목표이다.

 

 

 

2. 문제풀이

 

단순히 주어진 두 정수 사이의 합을 구하여 반환하는 것이 목표이다.

예를 들어, 4와 8을 입력받으면, 4부터 시작해, 5, 6, 7, 8까지의 합인 30을 출력하면 되는것이다.

반대의 경우인 8과 4를 입력받아도, 마찬가지로 두 수 사이의 값들을 더한 30을 출력해야한다.

만약 두 수가 똑같을 경우, 해당 수를 그대로 출력해준다. (예를 들어 3, 3이 주어진 경우, 3을 출력한다.)

이번에도 역시 프로그래머스에서 주어진 틀을 사용했으며, 틀은 다음과 같다.

(주어진 두 수가 -10,000,000~10,000,000 사이이기 때문에 long long 형이 주어졌다.)

 

 

 

 

3. 소스코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

long long solution(int a, int b) {
	long long answer = 0;
	int i;

	// 1. b가 a보다 큰 경우
	if (a < b) {
		for (i = a; i <= b; i++) {
			answer += i;
		}
	}
	// 2. a가 b보다 큰 경우
	else if (a > b) {
		for (i = b; i <= a; i++) {
			answer += i;
		}
	}
	// 3. a와 b가 같은 경우
	else if (a == b) {
		answer = a;
	}

	return answer;
}

주어진 수인 a와 b의 대소관계에 따라 3가지 경우로 나누어 합을 구했다.

첫번째로 b가 a보다 큰 경우, i를 a부터 시작해서 i의 수를 높여가며 b가 될때까지 더해주었다.

두번째로 a가 b보다 큰 경우에는 위 경우와 반대로, b부터 시작해 a가 될때까지 더해주었다.

마지막으로 a와 b가 동일한 경우에는 해당 숫자(나는 a로 출력했으나, b도 상관없다.)를 출력해주었다.

 

 


하루에 두 문제를 포스팅하는건 블로그를 시작한 이후로는 처음인것 같은데,

오늘 푼 문제들이 생각보다 슥슥 잘 풀려서.. 이정도면 하루에 두개 포스팅도 괜찮을 것 같다.🤗

조만간 백준도 다시 풀어봐야지..ㅎㅎ

728x90
반응형