# 리뷰: 로또 번호 생성 문제는 list.get()이용해서 풀었는데 정답코드를 보니 // 뽑는다 int[] pickedNum = new int[6]; for (int i = 0; i < pickedNum.length; i++) { pickedNum[i] = list.remove(0); } 이렇게 쓰여져 있더라구요! 뒤에 연습문제에도 비슷한 문제 있어서 보니까 아마 pickedNum[i] = list.remove(i) 를 잘못 입력하신거 같긴한 데.. 구글링을 통해 list.remove(N)은 N번째 인덱스의 값을 삭제하고 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다는 것 까지는 알겠습니다 예를 들어 list를 shuffle 하고나서 list에 12 , 3, 5, 7, 9.. 이런식으로 45개의 숫자가 들어가 있다고 할 때 int[] pickedNum = new int[6]; pickedNum[0] = list.remove(0); } 를 시행한다면 pickedNum[0] 에는 list의 0 번째 index가 사라진 3, 5, 7, 9... 이렇게 44개의 숫자가 나열되어있는 것 아닌가요? pickedNum은 int형 배열이니까 pickedNum[0]에는 int 한개가 들어가야 될 것 같은데.. 제가 잘못이해하고 있는걸까요? 설명 한번만 부탁드립니다..ㅠㅠ #### CODE <a class='btn btn-default' href='/codes/49681'>Link</a> ``` import java.util.Collections; import java.util.Arrays; import java.util.ArrayList; public class SimpleLottoMachine { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); for (int i=1; i<46 ;i++ ){ list.add(i); } Collections.shuffle(list); int[] arr = new int[6]; for (int i=0; i<6 ; i++ ){ arr[i]= list.get(i); } String result = Arrays.toString(arr); System.out.printf("자동 생성 번호: %s", result); } } ``` #### INPUT ``` ``` #### OUPUT ``` 자동 생성 번호: [38, 17, 45, 3, 6, 39] ```
반복문을 한 줄씩 작성한 뒤 하나하나 실행을 비교해보세요
선생님 말씀대로 하나하나 실행해서 서로 다른 6개의 정수가 나오는 걸 확인할 수 있었습니다 int[] arr = new int[6]; arr[0] = list.remove(0); System.out.println(arr[0]); arr[1] = list.remove(1); System.out.println(arr[1]); arr[2] = list.remove(2); System.out.println(arr[2]); arr[3] = list.remove(3); System.out.println(arr[1]); arr[4] = list.remove(4); System.out.println(arr[4]); arr[5] = list.remove(5); System.out.println(arr[5]); 그런데.. list.remove(N)을 실행하면 N번째 index의 값이 삭제되는데 그게 어떻게 하나의 정수로 귀결되는지 원리가 이해가 잘 안갑니다.. 계속 복습한 결과 suffle시행한 list 에 담긴 숫자가 순서대로 29 22 4 7 11 8 이라면 list.remove(0) = 29 인 건가요? list.remove(0) = 삭제되는 0번째 index값 <- 이렇게 이해하는게 맞는건지 궁금합니다!
네, 맞습니다. ArrayList의 `remove(n)` 메소드는 입력 정수에 해당하는 인덱스값을 반환함과 동시에, ArrayList에서 삭제합니다. 더 자세한 내용은 다음 키워드로 구글링해보세요 "ArrayList remove 메소드"