해당 문제는 초급 문제로 배열에 관한 문제이다.
문제 설명
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
입출력 예bersdirectionresult
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예bersdirectionresult
[1, 2, 3] | "right" | [3, 1, 2] |
[4, 455, 6, 4, -1, 45, 6] | "left" | [455, 6, 4, -1, 45, 6, 4] |
내가 푼 코드
import java.util.*;
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if(direction.equals("right")){
answer[0] = numbers[numbers.length - 1];
for(int i=numbers.length-2; i>=0; i--){
answer[i+1] = numbers[i];
}
}
else{
answer[numbers.length - 1] = numbers[0];
for(int i=0; i<numbers.length-1; i++){
answer[i] = numbers[i+1];
}
}
return answer;
}
}
이때 방향을 나타내는 문자열이 하나여서 그냥 배열 자체를 옮겨주었지만,
만약 방향을 여러 번 이동해야한다면
왼쪽, 오른쪽 양 방향으로 삽입 삭제가 가능해야하므로 Deque(ArrayDeque)를 이용하거나
LinkedList를 이용하여 구현해 줄 수있을 것 같다.
덱과 링크드리스트 모두 삽입, 삭제시 시간복잡도는 O(1) 이므로 둘 다 해당 문제에 적합 할 것으로 보인다.
만약 위와 같이 코드를 짠다면 numbers의 값을 모두 자료구조 안에 넣고 해당 자료구조의 함수를 써서 진행해주면 된다.
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
programmers - 문자열안에 문자열 java (0) | 2024.07.01 |
---|---|
백준 - 5613번) 계산기 프로그램 java (0) | 2024.07.01 |
programmers - 한 번만 등장한 문자 java (0) | 2024.07.01 |
programmers - 짝수는 싫어요 (0) | 2024.06.26 |
백준 - 2830번) 행성 X3 (java)💫 (0) | 2024.06.26 |