해커랭크 - Minimum Swaps 2

풀이전략

: 예시의 설명을 그대로 믿지 마라...

  • 문제를 보면 어차피 1 ~ n번까지 인덱스 순으로 나열하는 문제이다.
    인덱스 증가하면서 지정한 위치와 swap이 일어나는 식으로 하면
    2 3 4 1 5 라면
    3 2 4 1 5
    3 2 1 4 5 // 인데 인덱스가 증가하는 방식이면
    지금 인덱스는 4를 가리키는데 1과 3 swap을 못하게 된다.
    이 점에 유의하면서 규칙성을 찾아보자.

해커랭크에서..알게 된점.

나만의 방법으로 적용했을때, 답안과 문제 없다면 그걸로 접근하자!

소스코드

int minimumSwaps(vector<int> arr) {
    
    int cnt = 0;
    for(int i = 0; i < arr.size();)
    {
        int n = arr[i];
        if(n - 1 != i)
        {
            cnt++;
            swap(arr[i], arr[n -1]);
        }
        else
        {
            i++;
        }
    }

    return cnt;
}

좋은 웹페이지 즐겨찾기