[HackerRank/C++] Sequence Equation

2023. 2. 6. 08:09코딩테스트 해커랭크/Algorithms -Easy

p 배열이 있을때 같은 크기의 배열에서 각각 인덱스에 접근해 값을 구한다

 

만약 x배열이라고 하고 p[x]의 값으로 접근하고, 이 값을 다시 p의 인덱스로 접근한다

 

이렇게 만든 숫자 배열을 return 한다

vector<int> permutationEquation(vector<int> p)
{
    vector<int> result;
    result.resize(p.size());
    
    for (int i = 0; i < p.size(); ++i)
    {
        result[p[p[i] - 1] - 1] = i + 1;
    }
    
    return result;
}

설명하기도 싫다 끔찍하다 문제 이해하는게 제일 힘들다

 

result vector를 미리 만들어 resize로 p.size()만큼 늘려준다

 

반복문으로 돌면서 p[i]에 접근한 값에 -1을 한 값을 다시 인덱스로 사용하고 그 값에서 -1을 한 값을 다시 인덱스로 사용하며 그렇게 result 인덱스에 접근해 i 값에 + 1을 더한 값으로 만들어 준다

 

visual studio같은 프로그램으로 디버깅 하면서 만드는게 제일 편한 방법같다..