Daily coding

Java Basic : day 5 - Shuffle (카드 섞기) 본문

Language/Java_basic

Java Basic : day 5 - Shuffle (카드 섞기)

sunnnkim 2019. 11. 22. 18:44

shuffle

// Shuffle 첫번째 방법
// Random Array Number
            
int number[] = new int [10]; // 1 ~ 10

// 동적할당 (초기화)
for (int i = 0; i < number.length; i++) {
        number[i] = i + 1 ; // 1 ~ 10
}

// swap으로 셔플
int temp;  // 스왑용 변수
for (int i = 0; i < 1000 ; i++) {
        int a = (int)(Math.random()*10); // 0~9
        int b = (int)(Math.random()*10); // 0~9

        temp = number[a];
        number[a] = number[b];
        number[b] = temp;
        // 셔플의 기초 작업임 
        // 섞는다는 면에서는 성능이 그다지 좋지 않음
}
for (int i = 0; i < number.length; i++) {
        System.out.println("number = "+ number[i]);
}

// 두번째 방법

int number1[] = new int [10]; // 정해져 있으면 바로 공간 할당
boolean _switch[] = new boolean[10]; // 스위치용 불린 데이터 타입 10개 할당
int w, r; // w : 루프용 변수, r : 랜덤숫자

// 초기화
// boolean은 초기값이 false이나 코드의 반복을 위해 초기화 해준다
for (int i = 0; i < _switch.length; i++) {
        _switch[i]= false;
}

w = 0;
while( w < 10) { // w = 0 ~ 9
        r= (int)(Math.random()*10); // 0 ~ 9
        if(!_switch[r]) {
                _switch[r] = true;
                number1[w] = r + 1; 
                w++;
        }
}
for (int i = 0; i < number1.length; i++) {
        System.out.print (number1[i] + " ");
}System.out.println();
}
}