๋ฐฐ์—ด์€ ์ฝ”๋”ฉ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ ๋™์ผํ•œ ์œ ํ˜•์˜ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ฝ”๋”๊ฐ€ ๋ฐฐ์—ด์„ ๋ฐ˜์ „์‹œํ‚ค๋ ค๋Š” ๋ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ œ์˜ ๋…ผ๋ฆฌ๊ฐ€ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ๋’ค์ง‘์„ ํ•„์š”๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฐ˜์ „์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์ฝ”๋“œ์—์„œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐ˜์ „๋œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”์šฑ์ด ๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ๊ฒƒ์€ Java Juniors ์ธํ„ฐ๋ทฐ์—์„œ ๋งค์šฐ ์ธ๊ธฐ ์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ๋ฐฉ๋ฒ•

๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์„œ๋Š” 5๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ 1์˜ ๊ฒฝ์šฐ ์›๋ž˜ ๋ฐฐ์—ด์˜ ๋์—์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฑ„์›Œ์ง„ ์ถ”๊ฐ€ ๋ฐฐ์—ด(๋‚ด๋ฆผ์ฐจ์ˆœ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋’ค์ง‘๊ณ  ์˜ต์…˜ 2์—์„œ๋Š” ๋‚ด๋ถ€ ๋ฐ˜์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘๊ณผ ๋์˜ ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ๊ต์ฒด๋˜๋Š” ๊ณณ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ 3์—์„œ๋Š” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์˜ reverse() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์ „์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜ 4์—์„œ๋Š” List.add() ๋ฐ List.remove() ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ต์…˜ 5์—์„œ ์žฌ๊ท€๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.Java์—์„œ ๋ฐฐ์—ด ๋ฐ˜์ „ - 1

์˜ต์…˜ 1: ์ถ”๊ฐ€ ์–ด๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋ ˆ์ด ๋’ค์ง‘๊ธฐ

์ถ”๊ฐ€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค . ์ด ์˜ต์…˜์€ ์›๋ž˜ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ถ€ํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ฑ„์›Œ์ง€๋Š” ์ถ”๊ฐ€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ์›๋ž˜ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๋™์ผํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ์™€ ๋™์ผํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ๋ฐฐ์—ด์ด ์ฑ„์›Œ์งˆ ๋•Œ๊นŒ์ง€ ์ผœ์ง‘๋‹ˆ๋‹ค.

import java.util.Arrays;

public class ReverseArrayDemo {

   public static void main(String[] args) {
       int[] array = {7, 8, 9, 10, 11};
       System.out.println("Array : " + Arrays.toString(array)); // print array

       // Call function to get reversed array
       int[] reversedArray = reverse(array);
       System.out.println("Reversed array : " + Arrays.toString(reversedArray)); // print reversed array
   }

   // Method returns a new reversed array, based on the array which was passed to it.
   static int[] reverse(int[] array) {
       int[] newArray = new int[array.length];

       for (int i = 0; i < array.length; i++) {
           newArray[array.length - 1 - i] = array[i];
       }

       return newArray;
   }
}
์ด ์˜ˆ์ œ์—์„œ๋Š” ๋ฐฐ์—ด์„ ๋’ค์ง‘๊ณ  ์ „๋‹ฌ๋œ ๋ฐฐ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐ˜์ „๋œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. array ๊ฐ€ main ์—์„œ ์„ ์–ธ๋œ ๋‹ค์Œ reverse ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ์ธ์ˆ˜๋Š” ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. reverse ๋ฉ”์„œ๋“œ์—์„œ ์ƒˆ ๋ฐฐ์—ด newArray ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  array ์™€ ํฌ๊ธฐ๊ฐ€ ๋™์ผํ•˜๋ฉฐ ์™„์ „ํžˆ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. for ๋ฃจํ”„๋Š” newArray๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ฐฐ์—ด์˜ ์ „์ฒด ๊ธธ์ด์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค . ์ด๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ newArray ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ํ• ๋‹นํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค., ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐฐ์—ด ์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ ์™€์„œ newArray ์˜ ๋‘ ๋ฒˆ์งธ ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ํ• ๋‹นํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. newArray ๋Š” ๊ฑฐ๊พธ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. for ๋ฃจํ”„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด newArray๋Š” ์™„์ „ํžˆ ์ฑ„์›Œ์ง€๊ณ  array ์˜ ์ •๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค .
๋ฐฐ์—ด : [7, 8, 9, 10, 11] ๋ฐ˜์ „ ๋ฐฐ์—ด : [11, 10, 9, 8, 7]

์˜ต์…˜ 2: ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ธ์‡„

๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ์ด ์˜ต์…˜์˜ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋ฐฐ์—ด ๋ชฉ๋ก์œผ๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ์ œ์ž๋ฆฌ์—์„œ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ ๊ทธ๋“ค์ด ์‹ค์ œ๋กœ ๊ตํ™˜๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋งˆ์ง€๋ง‰ ์š”์†Œ์™€ ๊ต์ฒด๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋กœ ๊ต์ฒด๋˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. for ๋ฃจํ”„ ๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ ์ด๊ฒƒ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฐฐ์—ด์ด ๋ฐ˜์ „๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

import java.util.Arrays;
/*
reversing an array in-place
*/
public class ReverseArrayDemo {

   public static void main(String[] args) {
       int[] array = {1, 4, 9, 16, 25};
       System.out.println("Array before reverse : " + Arrays.toString(array));

       arrayReverse(array);
       System.out.println("Array after reverse : " + Arrays.toString(array));
   }
//arrayReverse is a method that reverses array in-place
   static void arrayReverse(int[] array) {
       for (int i = 0; i < array.length / 2; i++) {
           int temp = array[i];
           array[i] = array[array.length - i - 1];
           array[array.length - i - 1] = temp;
       }
   }
}
์›๋ž˜ ๋ฐฐ์—ด์€ Arrays.toString(array) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๋กœ ์ธ์‡„๋œ ๋‹ค์Œ ๋ฐฐ์—ด์ด ์ธ์ˆ˜๋กœ reverse ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค . for ๋ฃจํ”„์˜ ์—ญ๋ฐฉํ–ฅ ๋ฐฉ๋ฒ• ์—์„œ๋Š” temp๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. for ๋ฃจํ”„ ์—์„œ ์—ญ์ˆœ์€ ์„ธ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  1. temp ์— ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ํ• ๋‹น
  2. ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ํ• ๋‹น
  3. ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ์ž„์‹œ ํ• ๋‹น
๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋ฒˆ์—๋Š” ๋‘ ๋ฒˆ์งธ ์š”์†Œ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ˆ˜ํ–‰๋˜๊ณ  ๋งˆ์ง€๋ง‰ ์š”์†Œ์—์„œ ๋‘ ๋ฒˆ์งธ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐฐ์—ด์˜ ์—ฐ์†์ ์ธ ์š”์†Œ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๋ฃจํ”„๋Š” ๋ฐฐ์—ด ํฌ๊ธฐ์˜ ์ ˆ๋ฐ˜๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ๋ฐ˜๋Œ€์ชฝ ๋์— ์žˆ๋Š” ์š”์†Œ๊ฐ€ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ 0์—์„œ ํฌ๊ธฐ๋กœ ์ด๋™ํ•˜๋Š” for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋‘ ๋ฐฐ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค . ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ์—ญ์ˆœ์ด ๋‹ฌ์„ฑ๋˜๊ณ  ๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ’์ด ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜์ „ ์ „ ๋ฐฐ์—ด : [1, 4, 9, 16, 25] ๋ฐ˜์ „ ํ›„ ๋ฐฐ์—ด : [25, 16, 9, 4, 1]

์˜ต์…˜ 3: Collections.reverse() ์‚ฌ์šฉ

Java์—์„œ๋Š” ๊ธฐ์กด Collections ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€์ธ reverse ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋’ค์ง‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์ „์„ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.

import java.util.Arrays;
import java.util.Collections;

public class ReverseArrayDemo {

   public static void main(String[] args) {
       Integer[] array = {1, 4, 9, 16, 25};
       System.out.println("Array before reverse : " + Arrays.toString(array));

       reverse(array);
       System.out.println("Array after reverse : " + Arrays.toString(array));
   }
//method that reverses an array
   static void reverse(Integer[] array) {
       Collections.reverse(Arrays.asList(array));
   }
}
main ์—์„œ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๊ณ  5๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Arrays.asList(array)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก์œผ๋กœ ์ถœ๋ ฅํ•œ ๋‹ค์Œ reverse ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  array๋ฅผ ์ด ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. reverse ์—์„œ๋Š” Collections.reverse ๊ฐ€ ์‚ฌ์šฉ ๋˜๋ฉฐ ์ด๊ฒƒ์€ ๋ฐฐ์—ด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ๋ฐฐ์—ด ๋ชฉ๋ก์ธ Arrays.asList(array) ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค . ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” System.out.println์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์—ญ์ˆœ์œผ๋กœ ์ธ์‡„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค . ์ด๋ฒˆ์—๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๊ฐ™์€ ์ค„์— ์ธ์‡„๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜์ „ ์ „ ๋ฐฐ์—ด : [1, 4, 9, 16, 25] ๋ฐ˜์ „ ํ›„ ๋ฐฐ์—ด : [25, 16, 9, 4, 1]

์˜ต์…˜ 4: List.add() ๋ฐ List.remove()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ๋ฐ˜์ „

์ด ์ƒˆ๋กœ์šด ์˜ต์…˜์—์„œ List.add() ๋ฐ List.remove()๋Š” ๋ฐ˜์ „์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ๋ฐฐ์—ด์ด ๋ชฉ๋ก์œผ๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋ชฉ๋ก์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ๋˜์–ด ๋ชฉ๋ก์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ๋ฐฐ์น˜๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ๋ชฉ๋ก์ด ๋ฐ˜๋ณต๋œ ํ›„ ์ƒˆ ๋ชฉ๋ก์€ ์›๋ณธ์˜ ๋ฐ˜์ „์ž…๋‹ˆ๋‹ค. main() ๋ฉ”์„œ๋“œ ์—์„œ 5๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ด๋ ˆ์ด์˜ ์›๋ž˜ ์ƒํƒœ๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ๋ฐฐ์—ด์„ reverse() ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค . ์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฐ์—ด์˜ ์•ž์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์–ด๋ ˆ์ด์˜ ์ƒˆ๋กœ์šด(๋ฐ˜์ „๋œ) ์ƒํƒœ๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ()๋ฉ”์†Œ๋“œ์—์„œ ๋ฐฐ์—ด์€ ๋ฐ˜์ „์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด add() ๋ฐ remove() ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด Arrays.asList(array) ๋ฅผ ํ†ตํ•ด ๋ชฉ๋ก์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค . ์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฐ์—ด์˜ ์•ž์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. reverse() ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ๋ก ์š”์†Œ์˜ ๋ฐ˜์ „์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ i ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค . ์ฒ˜์Œ์— i๋Š” 0์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค . i = 0 ์ผ ๋•Œ ๋ชฉ๋ก ์—์„œ list.size() - 1 ์— ์žˆ๋Š” ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  i < list.size() - 1 ์ด๋ฏ€๋กœ ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.. remove() ๋ฉ”์„œ๋“œ๋Š” ์ œ๊ฑฐํ•œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ด ์š”์†Œ๋Š” ์ด์ œ ์ธ๋ฑ์Šค i = 0 ์—์„œ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค . ์ฆ‰, ์ฒ˜์Œ์— ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชฉ๋ก์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜์ง€๋งŒ ์ƒˆ ๋ชฉ๋ก์—๋Š” ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์ˆ˜์˜ ์š”์†Œ(์˜ˆ: ํฌ๊ธฐ) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . i , i = 1 ์˜ ๋‹ค์Œ ๊ฐ’์œผ๋กœ for ๋ฃจํ”„ ์‹คํ–‰์„ ๊ณ„์†ํ•˜๋ฉด ๋™์ผํ•œ ์ผ๋ จ์˜ ๋‹จ๊ณ„๊ฐ€ ์ˆ˜ํ–‰๋˜์–ด ๋งˆ์ง€๋ง‰ ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  i = 1 ์—์„œ ์ˆซ์ž๋กœ ์ž…๋ ฅ๋˜๊ณ  ๋ชฉ๋ก์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ i ์˜ ๋งˆ์ง€๋ง‰ ์ฆ๋ถ„ ๊ฐ’ ๊ณผ ๋ชฉ๋ก์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋กœ์ธ๋ฑ์Šค i๊ฐ€ ์žˆ๋Š” ๋ชฉ๋ก์˜ ๋ฃจํ”„ ์š”์†Œ๋Š” ์ธ๋ฑ์Šค i๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด ์š”์†Œ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ i ๋Š” 0์—์„œ list.size() - 1๊นŒ์ง€ ์ž…๋‹ˆ๋‹ค . ์š”์•ฝํ•˜๋ฉด ์‚ฌ์šฉ๋œ ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹จ๊ณ„:
  1. ๋‚˜๋Š” = 0
  2. list.size() ์—์„œ ์š”์†Œ ์ œ๊ฑฐ - 1
  3. list.size() - 1 , i = 0 ์— ์žˆ๋˜ ์š”์†Œ ์‚ฝ์ž…
  4. ์ฆ๋ถ„ i
  5. i์˜ ๋งˆ์ง€๋ง‰ ์ฆ๋ถ„ ๊ฐ’์ด ์‚ฌ์šฉ๋  ๋•Œ๊นŒ์ง€ 2~4๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค(3๋‹จ๊ณ„์—์„œ i์— ๋Œ€ํ•œ ์ƒˆ ๊ฐ’ ํฌํ•จ).

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ReverseArrayDemo {

   public static void main(String[] args) {
       Integer[] array = new Integer[]{1, 4, 9, 16, 25};
       System.out.println("Array before reverse : " + Arrays.toString(array));

       reverse(array);
       System.out.println("Array after reverse : " + Arrays.toString(array));
   }

   static void reverse(Integer[] array) {
       List list = new ArrayList<>(Arrays.asList(array));

       for (int i = 0; i < list.size() - 1; i++) {
           list.add(i, list.remove(list.size() - 1));
       }

       for (int i = 0; i < list.size(); i++) {
           array[i] = list.get(i);
       }
   }
}
์ด ์ฝ”๋“œ๋Š” ์ถœ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜์ „ ์ „ ๋ฐฐ์—ด : [1, 4, 9, 16, 25] ๋ฐ˜์ „ ํ›„ ๋ฐฐ์—ด : [25, 16, 9, 4, 1]

์˜ต์…˜ 5: ์žฌ๊ท€๋กœ ๋ฐฐ์—ด ๋ฐ˜์ „

์žฌ๊ท€ ๋ฐฉ๋ฒ•์€ ์ฝ”๋”ฉ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ ๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์—์„œ ๋ฐฐ์—ด์€ ๋ชฉ๋ก์œผ๋กœ ๋ณ€ํ™˜๋œ ๋‹ค์Œ ๋ชฉ๋ก์˜ ๋์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ๋งˆ๋‹ค ์ฝ”๋“œ๊ฐ€ reverse() ๋ฉ”์„œ๋“œ๋กœ ์ด๋™ํ•˜๊ณ  ๋ชฉ๋ก์—๋Š” ์ œ๊ฑฐ๋œ ๊ฐ’์ด ์—ญ์ˆœ์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฐฉ๋ฒ•๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 5๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•จ์ˆ˜ reverse() ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค . reverse() ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์€ ๋ฐฐ์—ด์„ ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊พธ๊ณ  ๋ชฉ๋ก ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๊ฑฐ๋‚˜ null์ธ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ œ๊ฑฐ๋˜์ง€๋งŒ Integer ์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค., ๊ฐ’ . ๊ทธ๋Ÿฐ ๋‹ค์Œ reverse() ๋ฉ”์„œ๋“œ ๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœ๋˜๊ณ  ์žฌ๊ท€๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ๋™์ผํ•œ ๋‹จ๊ณ„๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํฌ๊ธฐ ๊ฒ€์‚ฌ์—์„œ ๋ชฉ๋ก์ด 1๋ณด๋‹ค ํฌ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ์žฌ๊ท€๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก ์˜ ํฌ๊ธฐ๊ฐ€ 1 ์ผ ๋•Œ reverse()๋Š” ํ˜ธ์ถœ๋œ ์œ„์น˜๋กœ ๋Œ์•„๊ฐ€๊ณ  ๋ชฉ๋ก์— ๊ฐ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์›๋ž˜ ๋ชฉ๋ก๊ณผ ์ •ํ™•ํžˆ ๋ฐ˜๋Œ€๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ReverseArrayDemo {

   public static void main(String[] args) {
       Integer[] array = new Integer[]{1, 4, 9, 16, 25};
       System.out.println("Array before reverse : " + Arrays.toString(array));

       List list = new ArrayList<>(Arrays.asList(array));
       reverse(list);
       System.out.println("Array after reverse : " + Arrays.toString(list.toArray()));
   }

   public static void reverse(List list) {
       if (list== null || list.size() <= 1) {
           return;
       }

       Integer value = list.remove(0);

       reverse(list);

       list.add(value);
   }
}
์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ฐ˜์ „ ์ „ ๋ฐฐ์—ด : [1, 4, 9, 16, 25] ๋ฐ˜์ „ ํ›„ ๋ฐฐ์—ด : [25, 16, 9, 4, 1]

๊ฒฐ๋ก 

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋ฐฐ์—ด์„ ๋’ค์ง‘๋Š” 5๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. Collections ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ต์…˜ 3์€ ์•„๋งˆ๋„ Collections.reverse๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ์‹œ๋„๋˜๊ณ  ํ…Œ์ŠคํŠธ๋œ Java ํ•จ์ˆ˜ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค . ๋ฌผ๋ก  ํŠนํžˆ ํ•™์Šตํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ๋„๋กœ ์ตœ์ ํ™”๋˜๊ณ  ํ…Œ์ŠคํŠธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์ข‹์€ ์ฝ”๋”ฉ ์—ฐ์Šต์ด๊ณ  Java Junior ์ธํ„ฐ๋ทฐ์—์„œ ์„ฑ๊ณตํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.