[프로그래머스 / C++] 2의 영역

YH·2023년 11월 29일
1

문제

2의 영역 : 문제 링크


문제 분석

  • 정수 배열 arr가 주어진다. 배열안의 2가 모두 포함된 가장 작은 연속 된 부분 배열을 return. 단, arr에 2가 없는 경우 [-1]을 return
  • 정수 배열 arr에 2가 들어있는 인덱스를 저장할 정수 배열 check를 초기화. for loop를 통해 arr의 첫번째부터 마지막 원소까지 순환하고, if문을 통해 2를 발견하면 해당 인덱스를 check에 저장. loop 탈출 후, if문과 empty() 함수를 통해 check가 비어있다면 2가 없음을 의미하므로 [-1]을 return. else 문에서는 2를 발견한 처음과 마지막 인덱스의 배열을 잘라서 return

empty() 함수 사용법
str.empty();
v.empty();

  • string 또는 vector 객체가 비어있으면 1을, 문자열 또는 원소가 저장되어 있으면 0을 반환

풀이

#include <vector>

using namespace std;

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

0개의 댓글