학습일지/C와 C++

vector 중복 제거 구현 및 개선 과정

Tsukino Ren 2026. 4. 2. 20:48

문제

 vector에 저장된 값들 중 중복을 제거한 새로운 vector를 반환하는 함수를 구현한다.

vector<int> removeDuplicates(const vector<int>& v);

구현 코드

vector<int> removeDuplicates(const vector<int>& v) 
{
    vector<int> Result;
    for (int i = 0; i < v.size(); ++i)
    {
        bool push = true;

        for (int j = 0; j < Result.size(); ++j)
        {
            if (v[i] == Result[j])
            {
                push = false;
                break;
            }
        }

        if (push)
        {
            Result.push_back(v[i]);
        }
    }
    return Result;
}

구현 흐름

  • 결과를 저장할 Result vector를 생성
  • 원본 vector를 순회
  • 현재 값이 Result에 이미 존재하는지 확인
  • 존재하지 않을 경우에만 추가

이중 반복문을 사용하여 비교하는 방식을 사용했다.


개선 사항

작성 과정 중에는 생각이 잘 나지 않아 변수 이름을 push로 사용했는데 이 경우 의미가 애매해서 코드 흐름이 헷갈릴 수 있다.

bool push = false;

push는 "밀다","누르다" 라는 의미라서 실제 역할과 맞지 않을 수 있다.

 

변수 이름을

bool isDuplicate = false;

변수의 역할을 명확하게 표현하고 코드 가독성이 크게 개선되는 것이 있다.


느낀 점

  • 단순한 문제라도 변수 이름이 코드 이해도에 영향을 주는 것을 알았습니다.
  • 기능 구현보다 의도를 드러내는 코드 작성이 중요함을 알았습니다.

아쉬운 점

과제로 진행해본 경험이 있어 구현 자체는 가능하나 시간 분배 실패로 도전 문제를 풀지 못했다.

특정 문제는 지금까지 배워온 느낌의 코딩이 아니라 익숙치 않아 필수 임에도 풀지 못했다.

마무리

이번 시험을 통해 단순 기능 구현을 넘어서 코드의 가동성과 의도를 표현하는 것이 중요하다는 점을 확인했다.

또한 문제 해결 능력뿐만 아니라 시간 관리와 문제 선택의 전략도 테스트에서 중요한 요소임을 알았다.