입력으로 [4,4,1,4]가 오면 [4,1,4]로
[1,1,1,2,3]이면 [1,2,3]과 같이 중복을 제거하는 문제다.
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
for (int i = 0; i < arr.size()-1; i++) {
if (arr[i] == arr[i+1])
continue;
answer.push_back(arr[i]);
}
answer.push_back(arr.back());
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
//cout << "Hello Cpp" << endl;
return answer;
}
arr[i+1]을 비교하기 위해 조건은 size()-1까지로 한다. 연속으로 같은 숫자가 나오면 continue를 통해 다음을 비교한다.
1,1,3과 1,2,3을 비교해보면,
1 1일 경우 같기 때문에 push를 하지 않고 1 2 일 경우는 다른 숫자이므로 1을 push 하게 된다.
.....5,5,5 로 끝나는 경우와 ........5,5,6으로 끝나는 경우를 생각해보면,
5로 끝나는 경우 마지막 5,5를 비교하고 같기 때문에 push를 하지 않는다.
그리고 arr.back()을 통해 5를 push할 수 있다.
6으로 끝나는 경우 5,6 비교를 통해 5를 push하고,
마지막 arr.back()을 통해 6도 push할 수 있다.
[2020카카오공채] 문자열 압축(C++) (0) | 2019.11.13 |
---|---|
프로그래머스 Level 2 - 쇠막대기(C++) (0) | 2019.10.12 |
프로그래머스 Level 2 - 탑(C++) (0) | 2019.10.12 |
프로그래머스 Level 1 - 가운데 글자 가져오기(C++) (0) | 2019.09.29 |
프로그래머스 Level 1 - 시저 암호(C++) (0) | 2019.09.27 |