[프로그래머스 / C++] 배열 조각하기

YH·2023년 12월 10일
0

문제

배열 조각하기 : 문제 링크


문제 분석

  • 정수 배열 arrquery가 주어진다. query를 순회하면서 다음 작업을 반복한다.
    • 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버림.
    • 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버림.
  • 위 작업을 마친 후 남은 arr의 부분 배열을 return
  • for loop를 통해 query의 첫번째부터 마지막 원소까지 순환하고, if ~ else문을 통해 인덱스가 짝수 또는 홀수일 경우를 구분. 짝수일경우 erase() 함수를 사용하여, arr의 query[i] + 1 위치부터 마지막까지의 문자열을 삭제. 홀수일경우 arr의 처음부터 query[i] 이전 위치까지의 문자열을 삭제. loop 탈출 후, 최종적으로 저장된 arr을 return

vector의 erase() 함수 사용법
v.erase(firse, last); // first 이상, last 미만의 범위의 원소를 삭제
v.erase(삭제하려는 값의 위치);

  • erase() 함수를 통해 vector의 특정 값을 삭제할 경우, 해당 값이 삭제 되고 그만큼 vector의 size가 줄어듬

풀이

#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<int> query) {
    for(int i = 0 ; i < query.size(); ++i) {
        if(i % 2 == 0) {
            arr.erase(arr.begin() + query[i] + 1, arr.end());
        }
        else arr.erase(arr.begin(), arr.begin() + query[i]);
    }
    return arr;
}
profile
Keep Recycling Your Dreams

0개의 댓글