https://school.programmers.co.kr/learn/courses/30/lessons/120833
#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;
}
+++++++++
다른사람의 풀이를 통해 배우는 이터레이터의 활용
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers, int num1, int num2) {
vector<int> answer(numbers.begin()+num1,numbers.begin()+num2+1);
return answer;
}
이런식으로 이터레이터를 이용해서 vector<int> answer을 선언하면서 iterator를 넘겨주어서 그것들로 초기화를 하면서 만들어낼 수 있는 풀이가 있었다. 아주 좋은 풀이라는 생각이 든다. 이런 풀이를 이해하고 다음에 이런식의 풀이를 사용해보도록 하자. 특히 프로그래머스에서 문제를 풀때, 배열을 줄때 vector로 주고, 출력 배열로 vector를 이용해서 출력하는데, 이렇게 이터레이터를 이용하면 지금 첨부한 풀이처럼 깔끔하게 해결해낼 수 있을것 같다.
+++++++++++++
최근 프로그래머스를 풀면서 다른 사람의 풀이를 볼때 내가 push_back()을 쓸만한 시점에 emplace_back()을 쓰는 풀이가 보여서 나도 emplace_back()을 사용하는 풀이들이 보여서, 이번 풀이에서는 그렇게 해결해보았다. 그리고 그와 관련하여서 emplace_back()과 push_back()의 차이에 대해서 검색해보았다.
하나의 블로그 글을 발견하였고, 이 글에 대해서 공부하면 좋을것 같아서 첨부해본다.
그리고 그 블로그글에서 인용한 다른 글이 있는데, 이것도 emplace_back() vs push_back()에 대해서 참고하기 좋아보이는 내용이라 둘다 첨부한다. 간략하게 작성해보려 했는데, 읽다보니 학습해야할 영역이 조금씩 깊어지다보니 일단 방향성만 기록해두고 넘어간다.
https://openmynotepad.tistory.com/10
emplace_back 과 push_back 의 차이
item 타입의 생성자가 타입을 인자로 받는다면? push_back 함수는 '객체' 를 집어 넣는 형식으로, 객체가 없이 삽입을 하려면 "임시객체 (rvalue) " 가 있어야 합니다. 또는 암시적 형변환이 가능하다면,
openmynotepad.tistory.com
https://gumeo.github.io/post/emplace-back/
emplace_back vs push_back | Gudmundur Blog&Bio
tl;dr emplace_back is often mistaken as a faster push_back, while it is in fact just a different tool. Do not blindly replace push_back by emplace_back, be careful of how you use emplace_back, since it can have unexpected consequences.
gumeo.github.io
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Lv 0. 순서쌍의 개수 - 처음으로 시간초과 발생한 문제. (0) | 2023.09.18 |
---|---|
Lv 0. 진료순서 정하기 - sort는 algorithm 헤더에, greater<>()는 내림차순. *다시 풀어보기* (0) | 2023.09.18 |
Lv 0. 짝수의 합 (0) | 2023.09.16 |
Lv 0. 양꼬치 (0) | 2023.09.16 |
Lv 0. 각도기 (0) | 2023.09.16 |