어흥

[해커랭크] Arrays: Left Rotation (C++) 본문

알고리즘/HackerRank

[해커랭크] Arrays: Left Rotation (C++)

라이언납시오 2021. 2. 3. 15:58
728x90
반응형

문제 링크: www.hackerrank.com/challenges/ctci-array-left-rotation/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays

 

Arrays: Left Rotation | HackerRank

Given an array and a number, d, perform d left rotations on the array.

www.hackerrank.com

1. 주의할 점

- D번 수행할 때 마다 1칸씩 앞으로 당기지 않도록 한다(O(A.size()*D))

 

2. 구현

- 크기가 A.size()인 벡터 V[]를 생성한다

- A의 원소가 D만큼 왼쪽으로 가면, 기존자리 - D의 위치로 이동한다. 단, 이 값이 음수라면 A의 크기만큼 더해준다(뒤로 돌아가기 위해)

- A의 원소가 최종적으로 위치할 장소를 구했다면, V[] 벡터에 해당 원소를 삽입한다(구한 위치로 삽입)

 

vector<int> rotLeft(vector<int> a, int d) {
    int num = a.size();
    vector<int> v(num);
    for(int i=0;i<num;i++){
        int newLoc = i-d;
        if(newLoc<0) newLoc +=num;
        v[newLoc] = a[i];
    }
    return v;
}
728x90
반응형
Comments