0Pricing
Java Academy · 강의

검색, 최솟값·최댓값 및 뒤집기

선형 검색을 구현하고 한 번의 순회로 최솟값과 최댓값을 계산하며, 배열을 제자리에서 또는 복사본으로 뒤집습니다.

검색, 최솟값·최댓값 및 뒤집기은(는) CoddyKit의 무료 Java Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Java Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

선형 검색

선형 검색은 목표를 찾을 때까지 각 요소를 순서대로 확인합니다.

  • 찾으면 인덱스를 반환합니다
  • 찾지 못하면 -1을 반환합니다
  • break로 일찍 중지합니다
public class Main {
  public static void main(String[] args) {
    // Example array
    int[] a = {5, 8, 9, 12, 15};

    int t = 9;      // target value to search
    int idx = -1;   // will stay -1 if not found

    // Loop through each index of the array
    for (int i = 0; i < a.length; i = i + 1) {
      // Check if current element matches the target
      if (a[i] == t) {
        idx = i;   // store the index where found
        break;     // exit loop early (found the target)
      }
    }

    // Print result
    if (idx != -1) {
      System.out.println("Found " + t + " at index " + idx);
    } else {
      System.out.println(t + " not found in array");
    }
  }
}

findIndex()

검색을 메서드로 캡슐화합니다:

public class Main {
  public static void main(String[] args) {
    // Example array
    int[] a = {5, 8, 9, 12, 15};

    int t = 9;      // target value we are searching for
    int idx = -1;   // default index (-1 means "not found")

    // Loop through each index of the array
    for (int i = 0; i < a.length; i = i + 1) {
      // Check if current element matches the target
      if (a[i] == t) {
        idx = i;   // store the index where it was found
        break;     // stop searching (first match found)
      }
    }

    // Print result
    if (idx != -1) {
      System.out.println("Found " + t + " at index " + idx);
    } else {
      System.out.println(t + " not found in array");
    }
  }
}

한 번의 순회로 최솟값 및 최댓값

한 번의 순회로 최솟값과 최댓값을 계산합니다:

public class Main {
  public static void main(String[] args) {
    // Example array
    int[] a = {5, 8, 2, 12, 15, 1};

    // Initialize min and max with the first element
    int min = a[0];
    int max = a[0];

    // Loop starts from the second element (index 1)
    for (int i = 1; i < a.length; i = i + 1) {
      // If current element is smaller than current min → update min
      if (a[i] < min) min = a[i];

      // If current element is larger than current max → update max
      if (a[i] > max) max = a[i];
    }

    // Print results
    System.out.println("Minimum value = " + min);
    System.out.println("Maximum value = " + max);
  }
}

제자리에서 뒤집기

양 끝의 요소를 서로 바꾸며 안쪽으로 이동하여 제자리에서 뒤집습니다:

public class Main {
  public static void main(String[] args) {
    // Example array
    int[] a = {5, 8, 9, 12, 15};

    int i = 0;              // start pointer (left side)
    int j = a.length - 1;   // end pointer (right side)

    // Keep swapping until the two pointers meet
    while (i < j) {
      // Swap elements at positions i and j
      int tmp = a[i];
      a[i] = a[j];
      a[j] = tmp;

      // Move pointers toward the center
      i = i + 1;
      j = j - 1;
    }

    // Print the reversed array
    System.out.print("Reversed array: ");
    for (int k = 0; k < a.length; k++) {
      System.out.print(a[k] + " ");
    }
  }
}

뒤집은 복사본

뒤집은 복사본을 생성합니다(원본은 변경되지 않음):

public class Main {
  public static void main(String[] args) {
    // Example array
    int[] a = {5, 8, 9, 12, 15};

    // Create a new array b with the same length
    int[] b = new int[a.length];

    // Copy elements from a into b in reverse order
    for (int i = 0; i < a.length; i = i + 1) {
      // (a.length - 1 - i) gives the reversed index
      b[a.length - 1 - i] = a[i];
    }

    // Print original array
    System.out.print("Original array: ");
    for (int i = 0; i < a.length; i++) {
      System.out.print(a[i] + " ");
    }

    System.out.println(); // newline

    // Print reversed array
    System.out.print("Reversed array: ");
    for (int i = 0; i < b.length; i++) {
      System.out.print(b[i] + " ");
    }
  }
}

검색/MinMax/뒤집기 예시

실행해 보세요: 검색 결과, 최솟값 및 최댓값, 뒤집은 배열을 확인해 보세요.

public class Main {
  static int findIndex(int[] a, int t) {
    for (int i = 0; i < a.length; i = i + 1) {
      if (a[i] == t) return i;
    }
    return -1;
  }

  static int min(int[] a) {
    int m = a[0];
    for (int i = 1; i < a.length; i = i + 1) {
      if (a[i] < m) m = a[i];
    }
    return m;
  }

  static int max(int[] a) {
    int m = a[0];
    for (int i = 1; i < a.length; i = i + 1) {
      if (a[i] > m) m = a[i];
    }
    return m;
  }

  static void reverseInPlace(int[] a) {
    int i = 0, j = a.length - 1;
    while (i < j) {
      int tmp = a[i];
      a[i] = a[j];
      a[j] = tmp;
      i = i + 1;
      j = j - 1;
    }
  }

  static int[] reversedCopy(int[] a) {
    int[] b = new int[a.length];
    for (int i = 0; i < a.length; i = i + 1) {
      b[a.length - 1 - i] = a[i];
    }
    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 = {3, 1, 4, 1, 5};

    System.out.println("findIndex 4 -> " + findIndex(a, 4));
    System.out.println("findIndex 9 -> " + findIndex(a, 9));

    System.out.println("min = " + min(a));
    System.out.println("max = " + max(a));

    int[] b = reversedCopy(a);
    System.out.println("reversedCopy: " + join(b));

    reverseInPlace(a);
    System.out.println("reverseInPlace: " + join(a));
  }
}

선형 검색 확인

확인해 보세요: a에서 t의 인덱스를 반환하거나 -1을 반환하는 코드는 무엇입니까?

복습 및 다음 단계

복습: 선형 검색, 최솟값 및 최댓값, 배열을 뒤집는 두 가지 방법을 구현했습니다.

다음: 삽입, 삭제(인덱스 기준), 요소 이동을 배웁니다.

자주 묻는 질문

“검색, 최솟값·최댓값 및 뒤집기” 강의는 무료인가요?

네 — “검색, 최솟값·최댓값 및 뒤집기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Java Academy 강의 전체를 잠금 해제할 수 있습니다. Java Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“검색, 최솟값·최댓값 및 뒤집기”에서 뭘 배우나요?

선형 검색을 구현하고 한 번의 순회로 최솟값과 최댓값을 계산하며, 배열을 제자리에서 또는 복사본으로 뒤집습니다. 브라우저에서 직접 실행하는 실습 코드로 Java Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Java Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Java Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.

“검색, 최솟값·최댓값 및 뒤집기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Java Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Java Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 배열 기초 및 순회
  2. 검색, 최솟값·최댓값 및 뒤집기
  3. 인덱스로 삽입·삭제 및 이동
← Java Academy(으)로 돌아가기