상세 컨텐츠

본문 제목

프로그래머스 Level 1 - 같은 숫자는 싫어(C++)

학생일기/알고리즘

by jaws99 2019. 10. 7. 00:00

본문

반응형

입력으로 [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;
}

 

1. if

arr[i+1]을 비교하기 위해 조건은 size()-1까지로 한다. 연속으로 같은 숫자가 나오면 continue를 통해 다음을 비교한다.

1,1,3과 1,2,3을 비교해보면,

1 1일 경우 같기 때문에 push를 하지 않고 1 2 일 경우는 다른 숫자이므로 1을 push 하게 된다.

 

2. push_back(arr.back())

.....5,5,5 로 끝나는 경우와 ........5,5,6으로 끝나는 경우를 생각해보면,

5로 끝나는 경우 마지막 5,5를 비교하고 같기 때문에 push를 하지 않는다.

그리고 arr.back()을 통해 5를 push할 수 있다.

 

6으로 끝나는 경우 5,6 비교를 통해 5를 push하고,

마지막 arr.back()을 통해 6도 push할 수 있다.

 

반응형

관련글 더보기