프로그래밍 언어/JAVA

<Java> 중복되지 않는 숫자로 배열 만들기(arraycopy)

창조적생각 2021. 6. 30. 11:02

1.  1~9 사이의 중복되지 않는 숫자로 이루어진 3자리 숫자를 만드는 프로그램을 작성하라

단, Math.random()을 사용했기 때문에 실행결과와 다를 수 있다.

 

int[] ballarr = {1, 2, 3, 4, 5, 6, 7, 8, 9};

int[] ball3 = new int[3]

 

[결과]

486

 

[풀이]

 

public class practice5_5 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] ballarr = {1,2,3,4,5,6,7,8,9};
int[] ball3 = new int[3];
for(int i = 0; i < ballarr.length; i++) {
int j = (int) (Math.random()*ballarr.length);
int tmp = 0;
tmp = ballarr[i];// 랜덤값의 중복값을 없애기 위한 과정을 위해 필요한 변수입니다.
ballarr[i] = ballarr[j];
ballarr[j] = tmp;
}

//System.arraycopy(src(원배열), srcpos(복사할시작지점), dest(복사값이동배열), destPos(복사받을시작지점), length(길이));
System.arraycopy(ballarr,0,ball3,0,3);

for (int i = 0; i < ball3.length; i++) { // 배열 출력
System.out.print(ball3[i]);
}
/* arraycopy를 쓰지 않고 배열을 출력하는 법도 있습니다.

직접 ball3[]에 ballarr[]의 값을 하나하나 입력해주는 것입니다.

앞서서 for문에서 이미 랜덤한 값으로 바뀌었기에 이렇게 해줘도 무방합니다.

 

ball3[0] = ballarr[2];

ball3[1] = ballarr[3];

ball3[2] = ballarr[4];

 

for문을 이용해서 입력할 수도 있습니다.

for(int i = 0; i<ball3.length;i++){ball3[i] = ballarr[i+2];} */


}

}

*arraycopy 사용방법입니다.

//System.arraycopy(src(원배열), srcpos(복사할시작지점), dest(복사값이동배열), destPos(복사받을시작지점), length(길이));

배열안의 값들을 다른 배열 안에 복사하는 방법입니다.

 

이 방식이 마음에 들지 않거나 혹은 더 확실한 방법을 찾는다면 이 글을 읽어보시는 것을 추천합니다.

https://operstu1.tistory.com/50

728x90