[프로그래머스 / C++] 연속된 수의 합

YH·2023년 8월 9일
0

문제

연속된 수의 합 : 문제 링크


문제 분석

  • 두 정수 num과 total이 주어진다. 연속된 수 num개를 더한 값이 total이 될때, 정수 배열을 오름차순으로 담아 return
  • 규칙을 찾아보면 num이 홀수 일때는 total에서 num을 나눈 몫이 정수 배열의 정가운데에, 짝수 일때는 total에서 num을 나눈 몫이 정수 배열의 정가운데에서 하나 앞에 위치한다.
  • 이러한 규칙을 활용하여 num이 홀수 일때는 int형 변수 temp에 (total / num)에서 (num / 2)를 뺀 값(=시작위치)를 저장하고, 짝수 일때는 (total / num)에서 (num / 2)를 빼고 +1한 값(=시작위치)을 저장
  • for loop을 활용하여 시작위치(temp)부터 num수 만큼 1씩 값을 더하여 answer 배열에 저장하고 return

풀이

#include <vector>

using namespace std;

vector<int> solution(int num, int total) {
    vector<int> answer;
    int temp = 0;
    
    if(num % 2 == 1) {
        temp = (total / num) - (num / 2);
        for(int i = 0; i < num; ++i) answer.push_back(temp++);
    }
    else {
        temp = (total / num) - (num / 2) + 1;
        for(int i = 0; i < num; ++i) answer.push_back(temp++);
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글