*문제 출처는 프로그래머스에 있습니다.
문제 제목: 연속된 수의 합 (0단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120817
문제 설명
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
제한 사항
- 1 ≤ num ≤ 100
- 0 ≤ total ≤ 1000
- num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.
입출력 예
입출력 예 설명
나의 풀이
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int num, int total) {
vector<int> answer;
int m_number = total / num; // 중간 부분
int n_number = num / 2; // 시작 인덱스에서 어디서 시작할지 정해야함
int idx = 0; // 시작할 인덱스
if (num % 2 != 0) idx = m_number - n_number; // 홀수 일때 양 옆에 크기가 같다.
else idx = m_number - n_number + 1; // 짝수이면 왼쪽이 한칸 작고 오른쪽이 한칸 커져야한다.
for (int i = idx; i < m_number + n_number + 1; i++)
answer.push_back(i);
return answer;
}
※ 알아야 할 것
코드 짜면서 헷갈릴 때 주석을 다는 것도 좋은 방법 중 하나이다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 두 개 뽑아서 더하기 / C++ (0) | 2024.01.11 |
---|---|
Programmers / 문자열 묶기 / C++ (0) | 2024.01.11 |
Programmers / 잘라서 배열로 저장하기 / C++ (0) | 2024.01.11 |
Programmers / 옹알이 (1) / C++ (1) | 2024.01.03 |
Programmers / 문자열안에 문자열 / C++ (1) | 2024.01.02 |