두 정수 사이의 합
문제 설명
두 정수 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 |
Python 코드
def solution(a, b):
if a > b :
a , b = b , a
return sum(range(a, b+1))
def solution(a, b):
answer = 0
for i in range(min(a,b), max(a,b)+1):
answer += i
return answer
def solution(a, b):
return ( abs(a - b) + 1) * ( a + b ) // 2
- 수학 공식 사용
- 1부터 N까지의 총합은 N(N+1)/2
- a에서 b까지의 총합 ((a-b)+1) * (a+b) // 2
* 참고 링크 1 : https://jeongchul.tistory.com/645
* abs ( ) 함수 : 어떤 숫자를 입력받았을 때, 그 숫자의 절댓값을 돌려주는 함수
abs(3)
# result : 3
abs(-3)
# result : 3
abs(-1.2)
# result : 1.2
* min( ) 함수 : min(iterable)은 max 함수와 반대로, 인수로 반복 가능한 자료형을 입력받아 그 최솟값을 돌려주는 함수
min([1, 2, 3])
# result : 1
min("python")
# result : 'h'
* max( ) 함수 : max(iterable)는 인수로 반복 가능한 자료형을 입력받아 그 최댓값을 돌려주는 함수
max([1, 2, 3])
# result : 1
max("python")
# result : 'y'
* 참고 링크 : https://wikidocs.net/32
C++ 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
long long solution(int a, int b) {
long long answer = 0;
long long sum = 0;
if ( a > b ){
for ( int i = b; i < a+1; i++)
answer += i;
}
else if ( a < b ) {
for ( int i = a; i < b+1; i++)
answer += i;
}
else {
answer = a;
}
return answer;
}
* 참고 링크 : https://jjeongil.tistory.com/601
'코딩테스트 > Programmers' 카테고리의 다른 글
[코딩테스트/Programmers] 07_서울에서 김서방 찾기 (Lv1.) (0) | 2021.12.26 |
---|---|
[코딩테스트/Programmers] 06_가운데 글자 가져오기 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 04_x만큼 간격이 있는 n개의 숫자 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 03_짝수와 홀수 (Lv1.) (0) | 2021.12.26 |
[코딩테스트/Programmers] 02_수박수박수박수박수박수? (Lv1.) (0) | 2021.12.26 |