문제풀이/자바

TIL - 자바의정석 연습문제[ch6 - 20]

Mo_bi!e 2022. 12. 30. 20:43

[6 - 20]

1. 문제설명

2. 나의 해답

 

package ex6_20;

import java.util.Random;

public class Exercise6_20 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		int[] original = {1,2,3,4,5,6,7,8,9};
		System.out.println(java.util.Arrays.toString(original));
		
		int[] result = shuffle(original);
		System.out.println(java.util.Arrays.toString(result));
	}

	private static int[] shuffle(int[] original) {
		// TODO Auto-generated method stub
		Random rand = new Random();
		int j = 0;
		
		System.out.println(j);		
		
		
		for(int i = 0 ; i < 10 ; i++) {
			
			j = rand.nextInt(9);
		
			int temp = original[j];
			original[j] = original[j+1];
			original[j+1] = temp;
			
		}
		
		return original;
	}

}

콘솔 

[1, 2, 3, 4, 5, 6, 7, 8, 9]

0

[1, 2, 3, 4, 6, 5, 9, 8, 7]

 

3. 정답 코드

if(original == null || original.length == 0)
    return original;

함수에서 받은 매개변수가 null이거나 길이가 0인경우 그대로 다시 돌려주고 함수를 종료시키는 방법으로

인수에 대한 유효성체크를 할 수있다.

 

4. 보충 및 회고 

(1) 보충

 

1) 유효성체크가 무엇인지 실제로 체감하게 되었다.

이런것은 디테일의 차이이다. 잘 시도해보자!

 

 

(2) 회고 : 문제풀이과정에서 어떻게 접근하려고했는지 (접근방법) + 어려움이 있었는데 해결했다.

1) 문제는 손쉽게 풀수있었다

 

2) 다만 예상하지못한것이 swap코드를 이용할때 i + 1번째 인덱스로 특정하는 상황을 생각해보면 

난수추출은 총 인덱스보다 1작은 수부터 하는것이 바람직하다.