반응형
두 정수 사이의 합
문제
문제 설명
두 정수 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 사이의 모든 정수의 합을 리턴하면 된다. 이때 a와 b도 포함이 된다. 즉 a<= N <=b에서 N들의 합을 구하라는 것인데
An An+1 An+2 An+3 ……… Bn-3 Bn-2 Bn-1 Bn An=a Bn=b 라고 할때
An + Bn = An+1 + Bn-1 = An+2 + Bn-2 이므로 이런식으로 더해가는걸 생각 했는데 그냥 처음부터 끝까지 for문으로 더해도 문제 없다...
C++ 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <string> #include <vector> using namespace std; long long solution(int a, int b) { long long answer = 0; long long interval = a-b; if(interval == 0) return a; if(interval < 0) interval *= -1; if(interval % 2 == 0){ answer = (a+b)*(interval/2); answer += (a+b)/2; }else{ answer = (a+b)*(1+interval/2); } return answer; } | cs |
다른 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <string> #include <vector> using namespace std; long long solution(int A, int B) { long long answer = 0; int a = A < B ? A : B; int b = A < B ? B : A; for (int i = a; i <= b; i++) answer += i; return answer; } | cs |
반응형
'군대에서 한것 > 프로그래머스' 카테고리의 다른 글
<프로그래머스> Level1 문자열 내 p와 y의 개수 (0) | 2019.01.12 |
---|---|
<프로그래머스> Level1 모의고사 (0) | 2019.01.10 |
<프로그래머스> Level1 2016년 (0) | 2019.01.09 |
<프로그래머스> Level1 K번째수 (0) | 2019.01.05 |
<프로그래머스> Level1 같은 숫자는 싫어 (0) | 2019.01.05 |