728x90
- 관련 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120844
정수가 담긴 배열의 원소를 입력 받은 방향으로 한 칸씩 회전시킨 결과를 확인하는 문제이다.
단순 한 칸 이동이므로, 이동시킬 원소를 앞 또는 뒤에 삽입 후 이동된 원소를 제거해주었다.
1) 왼쪽으로 이동인 경우, 첫번째 위치 원소의 값을 배열 가장 마지막에 삽입 후 첫번째 위치 원소 제거
2) 오른쪽으로 이동인 경우, 마지막 위치 원소의 값을 배열 가장 앞에 삽입 후 마지막 위치 원소 제거
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> numbers, string direction) {
if (direction == "left")
{
numbers.insert(numbers.end(), numbers.at(0));
numbers.erase(numbers.begin());
}
else
{
int last = numbers.size() - 1;
numbers.insert(numbers.begin(), numbers.at(last));
numbers.erase(numbers.end() - 1);
}
return numbers;
}
rotate 함수를 통해 푸는 방법도 가능하다.
1) 왼쪽으로 이동인 경우, 가장 앞에서 두번째 원소를 기준으로 설정
2) 오른쪽으로 이동인 경우, 가장 마지막에서 두번째 원소를 기준으로 설정
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> numbers, string direction) {
if (direction == "left")
rotate(numbers.begin(), numbers.begin() + 1, numbers.end());
else
rotate(numbers.begin(), numbers.end() - 1, numbers.end());
return numbers;
}
728x90
'Algorithm > Programers' 카테고리의 다른 글
컨트롤 제트 (0) | 2023.06.15 |
---|---|
N개의 최소공배수 (0) | 2023.06.12 |
가까운 수 (0) | 2023.06.08 |
정수 부분 (0) | 2023.06.07 |
피자 나눠 먹기 (3) (0) | 2023.06.06 |
댓글