학습(0)/C++ 문제풀이

입문.프로.배열 회전 시키기, rotate()

누가 뭐래도 개발자 2025. 2. 21. 23:11

난해하게 품

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers, string direction) {
    int leng = numbers.size();
    vector<int> answer(leng);

    if ("right" == direction)
    {
        int i = leng + 1;

        while (--i)
        {
            answer[i % leng] = numbers[i - 1];
        }
    }
    else
    {
        int i = leng;
        while (--i)
        {
            answer[i - 1] = numbers[i];
        }
        answer[leng - 1] = numbers[i];
    }

    return answer;
}

 

 

  • rotate()

이렇게 좋은게 있었다니.

std::rotate(first, middle, last) //인자값: 반복자

[first, last) 범위의 요소들을 회전시켜 middle 위치의 요소가 새로운 firest가 된다.

 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> numbers, string direction) {
    int n = numbers.size();
    vector<int> answer = numbers;

    if (direction == "right") {
        rotate(answer.begin(), answer.begin() + n - 1, answer.end());
    } else if (direction == "left") {
        rotate(answer.begin(), answer.begin() + 1, answer.end());
    }

    return answer;
}

 

#include <iostream>

int main() {
    vector<int> numbers = {1, 2, 3, 4, 5};
    string direction = "right";
    vector<int> result = solution(numbers, direction);

    for (int num : result) {
        cout << num << " ";
    }
    cout << endl; // 출력: 5 1 2 3 4

    return 0;
}