1. 문제
- Random 클래스로 무작위의 숫자 발생
- nextInt(45)+1; → 1~45 중의 숫자 발생하게 범위 지정
- while문 사용
- 무작위 숫자를 배열에 차례대로 넣기
- 단, 중복되는 숫자는 있으면 안 됨
package algo;
import java.util.Random;
public class LottoApp {
public static void main(String[] args) {
int[] arr = new int[6];
Random r = new Random();
int n = r.nextInt(45)+1; // 1~45
System.out.println(n);
// [1,5,5,12,13,35] -> 중복되는 숫자 있으면 안됨
}
}2. 풀이
package algo;
import java.util.Arrays;
import java.util.Random;
import static java.util.Arrays.binarySearch;
public class LottoApp {
public static void main(String[] args) {
int[] arr = new int[6];
Random r = new Random();
int n = r.nextInt(45)+1; // 1~45 중 랜덤
int i = 0;
while (i < 6){
n = r.nextInt(45)+1;
if (Arrays.binarySearch(arr,n) >= 0 && Arrays.binarySearch(arr,n) < 6){
n = r.nextInt(45)+1;
} else {
arr[i] = n;
i++;
}
}
for (i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}


3. 정답
1) 중복여부 무관
package algo;
import java.util.Random;
public class Lotto01 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][]
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][15][][][][]
n = rand.nextInt(45)+1;
arr[1] = n;
// 2.3 세번째 추첨 [9][15][20][][][]
n = rand.nextInt(45)+1;
arr[2] = n;
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}
2) 중복 제외 - 두 번째 추첨 노가다
package algo;
import java.util.Random;
public class Lotto02 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][][][][][]
n = rand.nextInt(45)+1; // 9가 추첨됐다면?
if (arr[0] != n){
arr[1] = n;
}
n = rand.nextInt(45)+1; // 9가 추첨됐다면?
if (arr[0] != n){
arr[1] = n;
}
n = rand.nextInt(45)+1; // 9가 추첨됐다면?
if (arr[0] != n){
arr[1] = n;
}
n = rand.nextInt(45)+1; // 15가 추첨됐다면?
if (arr[0] != n){
arr[1] = n;
}
// 2.3 세번째 추첨 [9][15][20][][][]
n = rand.nextInt(45)+1;
arr[2] = n;
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}
3) 중복 제외 - 두 번째 추첨 while문 정리
package algo;
import java.util.Random;
public class Lotto03 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
n = rand.nextInt(45)+1;
if (arr[0] != n){
arr[1] = n;
break;
}
}
// 2.3 세번째 추첨 [9][15][20][][][]
n = rand.nextInt(45)+1;
arr[2] = n;
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}
4) 중복 제외 - 세 번째 추첨 노가다
package algo;
import java.util.Random;
public class Lotto04 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
n = rand.nextInt(45)+1;
if (arr[0] != n){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
n = rand.nextInt(45)+1; // <-9
if(arr[0] == n){
}
n = rand.nextInt(45)+1; // <-9
if(arr[0] == n){
}
n = rand.nextInt(45)+1; // <-15
if(arr[0] == n){
}
if(arr[1] == n){
}
n = rand.nextInt(45)+1; // <-15
if(arr[0] == n){
}
if(arr[1] == n){
}
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
}
if(arr[1] == n){
}
arr[2] = n;
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}5) 중복 제외 - 세 번째 추첨 정리
package algo;
import java.util.Random;
public class Lotto04 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
n = rand.nextInt(45)+1;
if (arr[0] != n){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(!isSame){
arr[2] = n;
}
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}
5) 중복 제외 - 세 번째 추첨 while문 정리
package algo;
import java.util.Random;
public class Lotto04 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
n = rand.nextInt(45)+1;
arr[0] = n;
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
n = rand.nextInt(45)+1;
if (arr[0] != n){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(!isSame){
arr[2] = n;
break;
}
}
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}6) 중복 제외 - 첫 번째, 두 번째 다시 정리
package algo;
import java.util.Random;
public class Lotto04 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(!isSame){
arr[0] = n;
break;
}
}
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(!isSame){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(!isSame){
arr[2] = n;
break;
}
}
// 2.4 네번째 추첨 [9][15][20][30][][]
n = rand.nextInt(45)+1;
arr[3] = n;
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
n = rand.nextInt(45)+1;
arr[4] = n;
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
n = rand.nextInt(45)+1;
arr[5] = n;
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}6) 중복 제외 - 네 번째, 다섯 번째, 여섯 번째 추첨 정리
package algo;
import java.util.Random;
public class Lotto04 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(!isSame){
arr[0] = n;
break;
}
}
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(!isSame){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(!isSame){
arr[2] = n;
break;
}
}
// 2.4 네번째 추첨 [9][15][20][30][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(arr[2] == n){
isSame = true;
}
if(!isSame){
arr[3] = n;
break;
}
}
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(arr[2] == n){
isSame = true;
}
if(arr[3] == n){
isSame = true;
}
if(!isSame){
arr[4] = n;
break;
}
}
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
if(arr[0] == n){
isSame = true;
}
if(arr[1] == n){
isSame = true;
}
if(arr[2] == n){
isSame = true;
}
if(arr[3] == n){
isSame = true;
}
if(arr[4] == n){
isSame = true;
}
if(!isSame){
arr[5] = n;
break;
}
}
for (int i = 0; i < 6; i++) {
System.out.print(arr[i] + " ");
}
}
}



7) 중복 제외 - for문 정리
package algo;
import java.util.Random;
public class Lotto05 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
// 2.1 첫번째 추첨 [9][][][][][] - 픽스
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
int i = 0;
for (int j = 0; j < 0; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[0] = n;
break;
}
}
// 2.2 두번째 추첨 [9][15][][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
int i = 0;
for (int j = 0; j < 1; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[1] = n;
break;
}
}
// 9, 9, 15, 15, 20
// 2.3 세번째 추첨 [9][15][20][][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-20
int i = 0;
for (int j = 0; j < 2; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[2] = n;
break;
}
}
// 2.4 네번째 추첨 [9][15][20][30][][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
int i = 0;
for (int j = 0; j < 3; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[3] = n;
break;
}
}
// 2.5 다섯번째 추첨 [9][15][20][30][40][]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
int i = 0;
for (int j = 0; j < 4; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[4] = n;
break;
}
}
// 2.6 여섯번째 추첨 [9][15][20][30][40][43]
while (true){
boolean isSame = false;
n = rand.nextInt(45)+1; // <-30
int i = 0;
for (int j = 0; j < 5; j++) {
if(arr[i] == n){
isSame = true;
}
i++;
}
if(!isSame){
arr[i] = n;
break;
}
}
for (int j = 0; j < 6; j++) {
System.out.print(arr[j] + " ");
}
}
}8) 중복 제외 - for문 최종 정리 + 배열 정렬
package algo;
import java.util.Arrays;
import java.util.Random;
public class Lotto06 {
public static void main(String[] args) {
// 1. 준비
Random rand = new Random();
int[] arr = new int[6];
// 2. 로또 번호 받기
int n;
boolean isSame;
for (int k = 0; k < arr.length; k++) {
while (true){
isSame = false;
n = rand.nextInt(45)+1; // <-20
for (int i = 0; i < k; i++) {
if(arr[i] == n){
isSame = true;
}
}
if(!isSame){
arr[k] = n;
break;
}
}
}
Arrays.sort(arr);
for (int a : arr) {
System.out.print(a + " ");
}
}
}


Share article