정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers, int num1, int num2) {
vector<int> answer;
for(int i = 0 ; i <= num2 - num1; i++){
answer.push_back(numbers[i + num1]);
}
return answer;
}
이번에는 이전 게시글들에 꽤 등장했었던 push_back 함수를 이용해서 풀었다.
잘린 배열의 범위를 어떻게 생각해내는지가 첫번째 관건이었던 것 같다.
이 문제를 보고 이건 무조건 push_back을 써야겠구나 생각이 들었다.
그래서 일단은 반복적으로 배열의 값들을 출력해줘야했기 때문에
반복하는 횟수를 num2 에서 num1을 빼준 값으로 지정해주었다.
그 다음 이 잘린 범위를 어떻게 표현할것인가가 문제였는데
지금 와서 작성된 코드를 보니 너무 단순해보인다. 직접 생각해내는 과정이 꼭 필요하고 중요한 것 같다.
잘린 범위가 시작되는 지점은 index num1 부터이고, num1부터 하나씩 더해져
num2에 도달할 때까지의 값들을 출력해야하는 것이다.
그렇다면 반복하는 횟수에 num1을 더해준 인덱스 값부터
answer 배열에 넣어주면 되는 것이다!
(줄 넘김은 내가 생각했던 단계 하나씩 잘라서 정리한 것)
(값을 집어넣을 배열) . push_back (어떤 값들을 넣어줄 것인가);
이 양식을 기억하자!
다른 사람들의 풀이
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers, int num1, int num2) {
vector<int> answer;
for(int i=num1; i<=num2; i++)
answer.push_back(numbers[i]);
return answer;
}
애초에 for문을 돌리면서 아예 i에 num1을 집어넣어서
push_back 함수엔 깔끔하게 i만 넣을 수 있도록 한 것같다. 흥미돋
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers, int num1, int num2) {
vector<int> answer;
for(int i = num1;i <= num2;++i)
{
answer.emplace_back(numbers[i]);
}
return answer;
}
새로운 함수 emplace_back을 발견했다.
약간 포켓몬 도감처럼 하나씩 함수가 모이는 느낌이 든다.
emplace는 설치하다는 뜻이며, 이 블로그를 통해 알아보자 :)
세상의 지니어스 여러분들 감사하무니..👏👏
https://openmynotepad.tistory.com/10
'프로그래머스 C++ > Level.0' 카테고리의 다른 글
프로그래머스 C++ Level. 0 제곱수 판별하기 (0) | 2023.07.04 |
---|---|
프로그래머스 C++ Level. 0 편지 (0) | 2023.06.25 |
프로그래머스 C++ Level. 0 문자열로 변환 (0) | 2023.04.26 |
프로그래머스 C++ Level. 0 중앙값 구하기 (0) | 2023.04.25 |
프로그래머스 C++ Level. 0 특정 문자 제거하기 (0) | 2023.04.12 |