TIL_230612

지인·2023년 6월 12일
0

TIL

목록 보기
21/38

🐰 배열의 순서를 바꾸는 예제를 풀었다.

public static int[] shuffle(int[] arr) {
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                arr[j] = random.nextInt(arr.length);
                arr[i] = arr[j];
            }
        }
        return arr;
    }
  • 위 코드에서 arr[j] = random.nextInt(arr.length) 부분이 0부터 arr.length-1 값을 무작위로 정수값을 반환하기 때문에 값이 중복되서 나왔다.
    값이 중복되지 않고 original 배열의 값이 뒤섞이게 하는 요구와는 다른 결과가 나왔다.
public static int[] shuffle(int[] arr) {
    Random random = new Random();
    for (int i = 0; i < arr.length; i++) {
        int j = random.nextInt(arr.length);
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    return arr;
}
  • random.nextInt(arr.length) 메소드를 사용하여 0부터 arr.length-1 사이의 무작위 정수 값을 반환 받고 그 값을 arr[j]에 저장한다.
  • arr[j]에는 temp의 값을 할당하여 arr[i]와 arr[j]의 값이 서로 바뀐다.
  • 위 코드로 하면 중복되는 값이 출력되지 않는다.
profile
열쩡

0개의 댓글