// 문제: 정수 배열 정수 k 가 주어졌을 때, 배열을 오른쪽으로 k번 회전하는 프로그램을 작성하시오.
// 입력 예시: arr = [1, 2, 3, 4, 5] , k = 3
// 출력 예시: [4, 5, 1, 2, 3]
public class rotateArr {
public static void calc(int[] arr, int k) {
// k의 길이가 너무 길어 for문이 많이 호출될 수 있어 % 연산을 사용하여 반복을 예방
if (k > arr.length) {
k = k / arr.length;
}
for (int j = 0; j < k; j++) {
int temp;
temp = arr[4];
for (int i = (arr.length - 1); i >= 0; i--) {
if (i == 0) {
arr[0] = temp;
} else {
arr[i] = arr[i - 1];
}
}
}
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == (arr.length - 1)) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ", ");
}
}
System.out.print("]");
}
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
int k = 23;
calc(arr, k);
}
}
설명 : 배열 arr와 정수 k값을 받고 이중for와 temp 변수를 활용하여 배열의 마지막 인덱스부터 시작해서 temp에 넣고 1씩 감소하여 해당 인덱스의 값을 다음 인덱스 값에 넣고 0번째 인덱스의 값은 temp 변수에 넣었던 값을 넣어서 동작하도록 한다.
- JavaScript
function rotateArr(arr, k) {
// k가 배열 길이보다 크면 불필요한 반복을 줄이기 위해 % 연산 적용
k = k % arr.length;
for (let j = 0; j < k; j++) {
let temp = arr[arr.length - 1]; // 마지막 요소 저장
for (let i = arr.length - 1; i > 0; i--) {
arr[i] = arr[i - 1]; // 한 칸씩 뒤로 이동
}
arr[0] = temp; // 첫 번째 요소에 마지막 값 삽입
}
console.log(arr);
}
// 실행 예시
rotateArr([1, 2, 3, 4, 5], 23);
'IT > 코딩테스트' 카테고리의 다른 글
2~100 사이의 소수, 합성수, 모든 합 구하기 (0) | 2025.04.01 |
---|---|
최소공배수 구하기 (0) | 2025.04.01 |