지식인에 답변용으로 만든건데 다른 사람이 먼저 달아서 여기에만 올린다.
알고리즘의 완성도를 높혀서 최소한의 동작으로만 작동하게 만들었다.
나중에 시간이 나면 중복 검색부분을 더 손봐야겠다.
현재는 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
'course > 지식인' 카테고리의 다른 글
[자바스크립트] 로그인 후 로그인창 사용금지. (0) | 2015.11.25 |
---|---|
[자바] BufferedReader/BufferedWriter 입/출력 및 문자열 정렬 (0) | 2015.11.17 |
[자바] 1~100까지 배열 생성 후 랜덤으로 생성된 숫자를 뺀 갯수 출력. (0) | 2015.11.12 |