[프로그래머스][C++] 같은 숫자는 싫어
같은 숫자는 싫어
문제 링크
분석
배열 arr
의 원소는 숫자 0부터 9까지로 이루어져 있습니다.
이 중 연속적으로 나타나는 숫자를 1개만 남기고 모두 제거해야합니다.
제거할 때 기존 배열의 순서는 유지해야합니다.
이렇게 연속된 숫자를 1개만 남기며, 기존 순서는 유지한 배열을 반환해야합니다.
풀이
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr)
{
vector<int> answer;
// 이전 숫자를 확인하기 위한 변수
int prev_num = -1;
// 배열을 순회하는 반복문
for (const auto& e : arr)
{
// 이전 숫자와 같은 경우 스킵
if (prev_num == e)
{
continue;
}
// 이전 숫자 갱신
prev_num = e;
// 반환 배열에 저장
answer.push_back(e);
}
return answer;
}
성능 요약
시간 복잡도는 $O(n)$입니다.
- 배열을 순회하는 반복문 $O(n)$
공간 복잡도는 $O(n)$입니다.
- 반환을 위한 배열
answer
$O(n)$
테스트 성능
정확성 테스트
테스트 1 〉 통과 (0.01ms, 4.14MB)
테스트 2 〉 통과 (0.02ms, 4.21MB)
테스트 3 〉 통과 (0.03ms, 4.13MB)
테스트 4 〉 통과 (0.02ms, 3.67MB)
테스트 5 〉 통과 (0.02ms, 4.14MB)
테스트 6 〉 통과 (0.02ms, 4.22MB)
테스트 7 〉 통과 (0.02ms, 3.58MB)
테스트 8 〉 통과 (0.02ms, 4.16MB)
테스트 9 〉 통과 (0.03ms, 4.17MB)
테스트 10 〉 통과 (0.02ms, 4.2MB)
테스트 11 〉 통과 (0.02ms, 4.2MB)
테스트 12 〉 통과 (0.01ms, 4.2MB)
테스트 13 〉 통과 (0.02ms, 4.16MB)
테스트 14 〉 통과 (0.02ms, 3.67MB)
테스트 15 〉 통과 (0.02ms, 3.68MB)
테스트 16 〉 통과 (0.03ms, 4.21MB)
테스트 17 〉 통과 (0.01ms, 4.2MB)
효율성 테스트
테스트 1 〉 통과 (107.88ms, 105MB)
테스트 2 〉 통과 (119.60ms, 105MB)
테스트 3 〉 통과 (107.97ms, 105MB)
테스트 4 〉 통과 (110.55ms, 105MB)
댓글남기기