같은 숫자는 싫어

문제 링크

같은 숫자는 싫어

분석

배열 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)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기