[프로그래머스/C++] ㅡ LV1 - 같은 숫자는 싫어
2021. 3. 3. 14:49ㆍ필요/코딩테스트(프로그래머스)
문제
programmers.co.kr/learn/courses/30/lessons/12906
풀이
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
int last = arr.size()-1;
for (int i=0; i<last; i++) {
if (arr[i] != arr[i+1]) { // 다음 배열값과 다르면 대입
answer.push_back(arr[i]);
}
}
answer.push_back(arr[last]); // 마지막 값의 대입
return answer;
}
개념
vector <int> arr 는 비어있는 arr 공간을 만든다.
이 배열에서 자신의 크기를 넘어서는 index를 넣은 값은 0 또는 전혀 다른 값이 나온다.
ex) a[2] = {1, 2}
a[3]의 값은 0 or 전혀 다른 값
풀이
반복되는 수를 누락시키면 된다.
반복문 안에서 조건문을 통해 배열값이 다음 배열 값과 다른 경우만 answer 배열에 대입한다.
이 경우 거의 해결되지만, 마지막 부분에 문제가 생긴다.
마지막 배열값과 범위를 넘어간 부분의 비교가 원활히 되지 않는다.
오히려 이 비교는 오류를 만들어낼 수 있다.
그 부분을 생략하기 위해 변수 last를 따로 지정했다.
마지막 값은 반복문 밖에서 anwer 배열에 대입한다.
+a
마지막에 생기는 문제는 주어진 입출력에 없었다.
이 케이스는 따로 테스트 케이스에 추가했다.
입력값 〉 | [1, 0, 0, 0] |
기댓값 〉 | [1, 0] |
'필요 > 코딩테스트(프로그래머스)' 카테고리의 다른 글
[프로그래머스/C++] ㅡ LV1 - 두 정수 사이의 합 (0) | 2021.03.05 |
---|---|
[프로그래머스/C++] ㅡ LV1 - 나누어 떨어지는 숫자 배열 (0) | 2021.03.05 |
[프로그래머스/C++] ㅡ LV1 - 3진법 뒤집기 (0) | 2021.03.02 |
[프로그래머스/C++] ㅡ LV1 - 가운데 글자 가져오기 (0) | 2021.02.26 |
[프로그래머스/C++] ㅡ LV1 - 2016년 (0) | 2021.02.26 |