# 리뷰: 로또 번호 생성
문제는 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]
```
sehongpark님의 답변
반복문을 한 줄씩 작성한 뒤
하나하나 실행을 비교해보세요
odainyio님의 답변
선생님 말씀대로 하나하나 실행해서 서로 다른 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값 <- 이렇게 이해하는게 맞는건지 궁금합니다!
sehongpark님의 답변
네, 맞습니다.
ArrayList의 `remove(n)` 메소드는
입력 정수에 해당하는 인덱스값을 반환함과 동시에,
ArrayList에서 삭제합니다.
더 자세한 내용은 다음 키워드로 구글링해보세요
"ArrayList remove 메소드"