인덱스로 삽입·삭제 및 이동
새 배열에 값을 삽입하고, 왼쪽으로 이동하여 인덱스로 삭제하며, 안전한 범위 검사를 연습합니다.
인덱스로 삽입·삭제 및 이동은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
삽입 개요
삽입은 일반 배열에서 보통 한 칸이 더 있는 새 배열을 생성합니다. 위치 앞의 요소를 복사하고, 새 값을 배치한 다음, 나머지 요소를 한 칸씩 이동하여 복사합니다.
새 배열에 삽입
새 배열의 인덱스 i에 삽입합니다:
public class Main {
// Method to insert a value at a given index
static int[] insertAt(int[] a, int i, int val) {
// Create a new array, one element larger
int[] b = new int[a.length + 1];
// Copy elements before the insertion index
for (int p = 0; p < i; p = p + 1) {
b[p] = a[p];
}
// Insert the new value at position i
b[i] = val;
// Copy the rest of the elements after position i
for (int p = i; p < a.length; p = p + 1) {
b[p + 1] = a[p];
}
return b;
}
public static void main(String[] args) {
// Example array
int[] a = {5, 8, 9, 12};
// Insert 99 at index 2 (between 8 and 9)
int[] b = insertAt(a, 2, 99);
// Print new array
System.out.print("Array after insertion: ");
for (int x : b) {
System.out.print(x + " ");
}
}
}
삭제 및 이동
삭제는 왼쪽으로 이동한 후 마지막 칸을 비워 인덱스를 기준으로 수행합니다:
public class Main {
// Method to delete an element at index k
static void deleteAt(int[] a, int k) {
// Shift elements to the left, starting from index k
for (int i = k; i < a.length - 1; i = i + 1) {
a[i] = a[i + 1];
}
// Clear the last element (since it's now duplicated)
a[a.length - 1] = 0;
}
public static void main(String[] args) {
// Example array
int[] a = {5, 8, 9, 12, 15};
// Delete element at index 2 (value = 9)
deleteAt(a, 2);
// Print updated array
System.out.print("Array after deletion: ");
for (int x : a) {
System.out.print(x + " ");
}
}
}
범위 확인
범위 확인은 실행 중 오류를 방지하는 데 도움이 됩니다. 요소가 n개일 때 유효한 인덱스는 0..n-1입니다. 삽입할 때 유효한 i는 0..n입니다.
public class Main {
// Insert a value at a given index
static int[] insertAt(int[] a, int i, int val) {
// Validate index (0 ≤ i ≤ a.length is allowed for insert)
if (i < 0 || i > a.length) {
throw new IllegalArgumentException("bad index");
}
int[] b = new int[a.length + 1];
for (int p = 0; p < i; p++) b[p] = a[p];
b[i] = val;
for (int p = i; p < a.length; p++) b[p + 1] = a[p];
return b;
}
// Delete a value at a given index
static void deleteAt(int[] a, int k) {
// Validate index (0 ≤ k < a.length is required for delete)
if (k < 0 || k >= a.length) {
throw new IllegalArgumentException("bad index");
}
for (int i = k; i < a.length - 1; i++) {
a[i] = a[i + 1];
}
a[a.length - 1] = 0; // clear the last slot
}
public static void main(String[] args) {
int[] a = {5, 8, 9, 12};
// Test insert
int[] b = insertAt(a, 2, 99);
System.out.print("After insert: ");
for (int x : b) System.out.print(x + " ");
System.out.println();
// Test delete
deleteAt(b, 3);
System.out.print("After delete: ");
for (int x : b) System.out.print(x + " ");
}
}
새 배열로 삭제
인덱스 k를 건너뛰는 더 작은 복사본을 생성합니다:
public class Main {
// Method to create a new array without the element at index k
static int[] without(int[] a, int k) {
// Validate index
if (k < 0 || k >= a.length) {
throw new IllegalArgumentException("bad index");
}
// New array has one fewer element
int[] b = new int[a.length - 1];
// Copy elements before k
for (int p = 0; p < k; p = p + 1) {
b[p] = a[p];
}
// Copy elements after k (shift left by one)
for (int p = k + 1; p < a.length; p = p + 1) {
b[p - 1] = a[p];
}
return b;
}
public static void main(String[] args) {
int[] a = {5, 8, 9, 12, 15};
// Remove element at index 2 (value = 9)
int[] b = without(a, 2);
// Print original
System.out.print("Original array: ");
for (int x : a) System.out.print(x + " ");
System.out.println();
// Print new array
System.out.print("Array without index 2: ");
for (int x : b) System.out.print(x + " ");
}
}
삽입 및 삭제 예시
실행해 보세요: 새 배열에 삽입하기, 왼쪽으로 이동하여 제자리에서 삭제하기, 복사하여 삭제하기를 확인해 보세요.
public class Main {
static int[] insertAt(int[] a, int i, int val) {
if (i < 0 || i > a.length) throw new IllegalArgumentException("bad index");
int[] b = new int[a.length + 1];
for (int p = 0; p < i; p = p + 1) b[p] = a[p];
b[i] = val;
for (int p = i; p < a.length; p = p + 1) b[p + 1] = a[p];
return b;
}
static void deleteAtShift(int[] a, int k) {
if (k < 0 || k >= a.length) throw new IllegalArgumentException("bad index");
for (int i = k; i < a.length - 1; i = i + 1) {
a[i] = a[i + 1];
}
a[a.length - 1] = 0;
}
static int[] without(int[] a, int k) {
if (k < 0 || k >= a.length) throw new IllegalArgumentException("bad index");
int[] b = new int[a.length - 1];
for (int p = 0; p < k; p = p + 1) b[p] = a[p];
for (int p = k + 1; p < a.length; p = p + 1) b[p - 1] = a[p];
return b;
}
static String join(int[] a) {
String s = "";
for (int i = 0; i < a.length; i = i + 1) {
s = s + a[i] + (i + 1 < a.length ? " " : "");
}
return s;
}
public static void main(String[] args) {
int[] a = {10, 20, 30, 40};
System.out.println("a = " + join(a));
int[] b = insertAt(a, 2, 99);
System.out.println("insertAt(2) = " + join(b));
deleteAtShift(a, 1);
System.out.println("deleteAt(1) = " + join(a));
int[] c = without(b, 3);
System.out.println("without(3) = " + join(c));
}
}
삭제 및 이동 확인
확인해 보세요: 왼쪽으로 이동하고 마지막 칸을 비워 인덱스 k의 요소를 삭제하는 코드는 무엇입니까?
복습 및 다음 단계
복습: 새 배열을 사용하여 삽입하고, 왼쪽으로 이동하여 삭제하고, 더 작은 복사본을 생성했습니다. 항상 범위를 확인하세요.
다음: 객체 배열과 빈도 세기 같은 간단한 알고리즘으로 넘어갑니다.
자주 묻는 질문
“인덱스로 삽입·삭제 및 이동” 강의는 무료인가요?
네 — “인덱스로 삽입·삭제 및 이동” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“인덱스로 삽입·삭제 및 이동”에서 뭘 배우나요?
새 배열에 값을 삽입하고, 왼쪽으로 이동하여 인덱스로 삭제하며, 안전한 범위 검사를 연습합니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Java Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.
“인덱스로 삽입·삭제 및 이동” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 배열 기초 및 순회
- 검색, 최솟값·최댓값 및 뒤집기
- 인덱스로 삽입·삭제 및 이동