지식인에 답변용으로 만든건데 다른 사람이 먼저 달아서 여기에만 올린다.

 

알고리즘의 완성도를 높혀서 최소한의 동작으로만 작동하게 만들었다.

나중에 시간이 나면 중복 검색부분을 더 손봐야겠다.

현재는 num을 비교할 때 중복값이 있으면 num[i]를 처음부터 다시 비교 시작하는데, 이미 추출된 랜던값을 앞으로 보내 제외 시키고 리스트나 맵 등으로 마지막에 비교했던 부분에서 시작하는 방법을 생각해 봐야할  듯..

어렵지는 않을것 같긴한데 지식인에 답글 달기 바빠서 언제 쯤 해볼련지..

 

효율성을 알아보기 위해 1~6 까지 6자리 출력을 랜덤으로 추출해서 중복되지 않게 처리하는 과정을 보기 위해, 

진행과정과 실행과정도 함께 올렸다.

 

 

1. 소스

 

package test001;

import java.util.Arrays;
import java.util.Random;

public class lotto_001 {
 
    public static void main(String[] args) {
  
      Random r = new Random();

      try{
         int[] num = new int[6]; //배열변수 선언, 6개의 배열 생성
         int cnt = 0; //cnt 값 선언
         int result;
         int j = 0;    // 순서 System.out.println 출력용.

        while(cnt < 6){

            result = r.nextInt(6) + 1;
           System.out.println(j++ + ". result : " + result + " / cnt : " + cnt);
           // System.out.println(j++ + ". result : " + result);
           boolean k = false;

               for(int i = 0; i <= cnt; i++){
                   System.out.println(i + ". num[i] : " + num[i]);

                   if(num[i] == result){
                       System.out.println(i + ". num[i] == result : " + num[i]);
                       k = true;
                       break;
                   }
               }
       
               if(k == false){
                   num[cnt] = result;
                   // System.out.println("k == true 일때 num[cnt] : " + num[cnt] + " / cnt : " + cnt );
                   cnt++;
               }


         System.out.println("");
         // System.out.println(num[cnt]);
     }
     Arrays.sort(num);
     System.out.println(Arrays.toString(num));
   
     for (int i : num){
         System.out.println(i);
     }
     
 }catch(Exception e){
     System.out.println("error~");
   
 }

    }

}

 

 

2. 실행 결과

 

1) 결과

0. result : 6 / cnt : 0
0. num[i] : 0

1. result : 6 / cnt : 1
0. num[i] : 6
0. num[i] == result : 6

2. result : 5 / cnt : 1
0. num[i] : 6
1. num[i] : 0

3. result : 1 / cnt : 2
0. num[i] : 6
1. num[i] : 5
2. num[i] : 0

4. result : 2 / cnt : 3
0. num[i] : 6
1. num[i] : 5
2. num[i] : 1
3. num[i] : 0

5. result : 3 / cnt : 4
0. num[i] : 6
1. num[i] : 5
2. num[i] : 1
3. num[i] : 2
4. num[i] : 0

6. result : 6 / cnt : 5
0. num[i] : 6
0. num[i] == result : 6

7. result : 4 / cnt : 5
0. num[i] : 6
1. num[i] : 5
2. num[i] : 1
3. num[i] : 2
4. num[i] : 3
5. num[i] : 0

[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6

 

2) 결과

0. result : 6 / cnt : 0
0. num[i] : 0

1. result : 1 / cnt : 1
0. num[i] : 6
1. num[i] : 0

2. result : 4 / cnt : 2
0. num[i] : 6
1. num[i] : 1
2. num[i] : 0

3. result : 3 / cnt : 3
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 0

4. result : 3 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

5. result : 4 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
2. num[i] == result : 4

6. result : 1 / cnt : 4
0. num[i] : 6
1. num[i] : 1
1. num[i] == result : 1

7. result : 6 / cnt : 4
0. num[i] : 6
0. num[i] == result : 6

8. result : 4 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
2. num[i] == result : 4

9. result : 1 / cnt : 4
0. num[i] : 6
1. num[i] : 1
1. num[i] == result : 1

10. result : 3 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

11. result : 1 / cnt : 4
0. num[i] : 6
1. num[i] : 1
1. num[i] == result : 1

12. result : 3 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

13. result : 6 / cnt : 4
0. num[i] : 6
0. num[i] == result : 6

14. result : 5 / cnt : 4
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
4. num[i] : 0

15. result : 6 / cnt : 5
0. num[i] : 6
0. num[i] == result : 6

16. result : 3 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

17. result : 3 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

18. result : 6 / cnt : 5
0. num[i] : 6
0. num[i] == result : 6

19. result : 3 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

20. result : 3 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

21. result : 4 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
2. num[i] == result : 4

22. result : 3 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

23. result : 2 / cnt : 5
0. num[i] : 6
1. num[i] : 1
2. num[i] : 4
3. num[i] : 3
4. num[i] : 5
5. num[i] : 0

[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6

 

3) 결과

0. result : 1 / cnt : 0
0. num[i] : 0

1. result : 1 / cnt : 1
0. num[i] : 1
0. num[i] == result : 1

2. result : 4 / cnt : 1
0. num[i] : 1
1. num[i] : 0

3. result : 5 / cnt : 2
0. num[i] : 1
1. num[i] : 4
2. num[i] : 0

4. result : 4 / cnt : 3
0. num[i] : 1
1. num[i] : 4
1. num[i] == result : 4

5. result : 2 / cnt : 3
0. num[i] : 1
1. num[i] : 4
2. num[i] : 5
3. num[i] : 0

6. result : 3 / cnt : 4
0. num[i] : 1
1. num[i] : 4
2. num[i] : 5
3. num[i] : 2
4. num[i] : 0

7. result : 5 / cnt : 5
0. num[i] : 1
1. num[i] : 4
2. num[i] : 5
2. num[i] == result : 5

8. result : 4 / cnt : 5
0. num[i] : 1
1. num[i] : 4
1. num[i] == result : 4

9. result : 6 / cnt : 5
0. num[i] : 1
1. num[i] : 4
2. num[i] : 5
3. num[i] : 2
4. num[i] : 3
5. num[i] : 0

[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6

 

4) 결과

0. result : 1 / cnt : 0
0. num[i] : 0

1. result : 2 / cnt : 1
0. num[i] : 1
1. num[i] : 0

2. result : 4 / cnt : 2
0. num[i] : 1
1. num[i] : 2
2. num[i] : 0

3. result : 2 / cnt : 3
0. num[i] : 1
1. num[i] : 2
1. num[i] == result : 2

4. result : 1 / cnt : 3
0. num[i] : 1
0. num[i] == result : 1

5. result : 3 / cnt : 3
0. num[i] : 1
1. num[i] : 2
2. num[i] : 4
3. num[i] : 0

6. result : 2 / cnt : 4
0. num[i] : 1
1. num[i] : 2
1. num[i] == result : 2

7. result : 5 / cnt : 4
0. num[i] : 1
1. num[i] : 2
2. num[i] : 4
3. num[i] : 3
4. num[i] : 0

8. result : 5 / cnt : 5
0. num[i] : 1
1. num[i] : 2
2. num[i] : 4
3. num[i] : 3
4. num[i] : 5
4. num[i] == result : 5

9. result : 3 / cnt : 5
0. num[i] : 1
1. num[i] : 2
2. num[i] : 4
3. num[i] : 3
3. num[i] == result : 3

10. result : 6 / cnt : 5
0. num[i] : 1
1. num[i] : 2
2. num[i] : 4
3. num[i] : 3
4. num[i] : 5
5. num[i] : 0

[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6