업무를 진행 하면서 알고리즘의 필요성을 요즘 느끼고 있다,,,
그래서 시간이 될때마다 주기적으로 문제를 풀어보려고 한다!
언젠간,,,하다보면 도움이 되겠지,,,
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
//right 3,1,2 -> 2,3,1
//left 3,1,2 -> 1,2,3
if (direction.equals("right")) {
for(int i=0; i < numbers.length -1; i++) {
answer[i+1] = numbers[i];
}
answer[0] = numbers[numbers.length -1];
} else {
for(int i=0; i< numbers.length -1; i++) {
answer[i] = numbers[i+1];
}
answer[numbers.length -1] = numbers[0];
}
return answer;
}
}
오른쪽 기준으로 설명 하면
1. answer 배열의 길이는 numbers 배열의 길이와 동일 하기 때문에 동일한 길이로 초기화
2. 오른쪽으로 한칸 씩 이동 -> 즉, 마지막 인덱스의 번호가 맨 왼쪽으로 위치해야함.
3. for문에서 numbers.length -1 의 이유!
-> 길이 만큼 돌릴 경우 answer[i+1] 에서 out of index 오류 발생
-> answer[0] 번째에 numbers 배열의 마지막 값을 넣어야 함.
위 알고리즘은 순차 탐색 알고리즘을 적용하였다.
순차 탐색 알고리즘은 값을 하나씩 탐색하며 위치를 변경하는 것으로 알고 있고, 해당 알고리즘이 적절하다고 생각한다!
시간 복잡도 : O(n)
n : 배열의 길이