프로그래밍 공부
작성일
2024. 1. 11. 09:50
작성자
WDmil
728x90

문제 설명

배열 arr가 주어진다.

 

배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있다.

 

이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 한다.

 

단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 한다.

 

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수 들을 return하는 solution을 완성하라.


제한 사항

배열 arr의 크기 : 1,000,000 이하의 자연수

배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수


입출력 예

arr answer
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

 


코드 풀이

 

vector형태로 데이터를 기입하되, 맨 마지막 숫자가 겹칠경우, push또는 emplace하지 않으면 된다.

 

정리된 값을 answer로 반환한다.

#include <vector>
#include <iostream>

using namespace std;

vector<int> solution(vector<int> arr) 
{
    vector<int> answer;
    
    for(auto& def : arr)
        if(answer.empty() || answer.back() != def)
            answer.emplace_back(def);

    return answer;
}

비어있을 경우, 일단 넣고본다.

아닐때, 뒷값을 확인하고, 같지 않을경우에만 값을 넣어준다.

728x90

'코딩테스트 문제 풀이 > 스텍&큐' 카테고리의 다른 글

다리를 지나는 트럭  (0) 2024.02.14
프로세스  (0) 2024.02.08
올바른 괄호  (0) 2024.01.30
기능개발  (0) 2024.01.19
더 맵게  (0) 2024.01.11