17. 로또 만들기

박은서's avatar
Dec 17, 2025
17. 로또 만들기

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(); } }
notion image
notion image
notion image

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] + " "); } } }
notion image

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] + " "); } } }
notion image
notion image
notion image

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 + " "); } } }
notion image
notion image
Share article