์ž๋ฐ” ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ์„๋•Œ, Random๊ฐ์ฒด ์ง„๋„์—์„œ Setํ™œ์šฉ ์—†์ด ๋กœ๋˜ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์ถœ๋ ฅํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ๋ฐฐ์› ๋˜ ๊ธฐ์–ต์ด ์žˆ์–ด์„œ ๋‹ค์‹œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


1. ๋ชฉํ‘œ

Set ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๋กœ๋˜ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ.

๊ฐ ์ˆซ์ž๋Š” ์ค‘๋ณต๋˜๋ฉด ์•ˆ๋œ๋‹ค.

์‹คํ–‰ํ•  ๋•Œ ๋งˆ๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. 

import java.util.Random;

public class LottoGenerator {
   private final Random random = new Random();
   private int[] lottoNumbers;
   private int count;
   
   public int[] generate() {
        lottoNumbers = new int[6];
        count = 0;
        
        while (count < 6) {
         //1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž ์ƒ์„ฑ
         int number = random.nextInt(45) +1;
         // ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฐฐ์—ด์— ์ถ”๊ฐ€
         if (isUnique(number)) {
             lottoNumbers[count] = number;
             count++;
         }
        }
        return lottoNumbers;
   }
   
   // ์ด๋ฏธ ์ƒ์„ฑ๋œ ๋ฒˆํ˜ธ์™€ ์ค‘๋ณต๋˜๋Š”์ง€ ๊ฒ€์‚ฌ
   private boolean isUnique(int number) {
       for (int i = 0; i < count; i++) {
           if (lottoNumbers[i] == number) {
                 return false;
           }
       }
       return true;
   }
}

 

public class LottoGeneratorMain {
   public static void main(String[] args) {
       LottoGenerator generator = new LottoGenerator();
       int[] lottoNumbers = generator.generate();
       
       // ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ ์ถœ๋ ฅ
       System.out.print("๋กœ๋˜ ๋ฒˆํ˜ธ : ");
       for (int lottoNumber : lottoNumbers) {
           System.out.print(lottoNumber + " ");
       }
   }
}

2. ์ฃผ์š” ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ ์„ค๋ช…

- LottoGenerator ํด๋ž˜์Šค :

Random ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž„์˜์ด ์ˆซ์ž ์ƒ์„ฑ.

lottoNumbers ๋ฐฐ์—ด์„ ํ†ตํ•ด 6๊ฐœ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅ.

generate ๋ฉ”์„œ๋“œ๋กœ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ,isUnique ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌ. 

 

3. ๋ฉ”์„œ๋“œ๋ณ„ ์„ค๋ช…

 3.1 generate ๋ฉ”์„œ๋“œ

- ๋กœ์ง :

1) lottoNumbers ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ๋กœ๋˜ ๋ฒˆํ˜ธ 6๊ฐœ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ์ƒ์„ฑํ•œ๋‹ค.

2) ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด 1๋ถ€ํ„ฐ 45์‚ฌ์ด์˜ ์ž„์˜ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

3) ์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ(isUnique ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ) ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•œ๋‹ค.

4) ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค count๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ ๋ฐฐ์—ด์˜ ํ˜„์žฌ ์ €์žฅ๋œ ๋ฒˆํ˜ธ ๊ฐœ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

5) 6๊ฐœ์˜ ๊ณ ์œ ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ์ €์žฅ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

- ๋ฐ˜ํ™˜๊ฐ’ : 6๊ฐœ์˜ ๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด int ๋ฐฐ์—ด

 

  3.2 isUnique ๋ฉ”์„œ๋“œ

- ์—ญํ•  : ๋ฐฐ์—ด lottoNumbers์— ํŠน์ • ์ˆซ์ž๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ.

- ๋กœ์ง :

1) ํ˜„์žฌ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์ˆซ์ž ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

2) ์ž…๋ ฅ๊ฐ’ number๊ฐ€ ๋ฐฐ์—ด์˜ ์ˆซ์ž ์ค‘ ํ•˜๋‚˜์™€ ์ผ์น˜ํ•˜๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

3) ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 


4. ๋ฌธ๋ฒ• ์š”์†Œ

 4.1 Random ํด๋ž˜์Šค

- ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ : nextInt(int bound) :

0๋ถ€ํ„ฐ bound-1๊นŒ์ง€์˜ ์ž„์˜์˜ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š”  random.nextInt(45)๋ฅผ ํ†ตํ•ด 0๋ถ€ํ„ฐ 44๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด๋ฅผ +1ํ•˜์—ฌ 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ๊ฐ’์„ ์–ป๋Š”๋‹ค.

 

< random.nextInt(45) +1์—์„œ ์™œ 45์ธ์ง€ >

- random.nextInt(45)์˜ ๋™์ž‘ :

0๋ถ€ํ„ฐ 44๊นŒ์ง€์˜ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ +1์„ ์ถ”๊ฐ€ํ•˜๋ฉด 1๋ถ€ํ„ฐ 45๊นŒ์ง€์˜ ์ˆซ์ž๋กœ ์กฐ์ •๋œ๋‹ค.

 

- ๋กœ๋˜ ๋ฒˆํ˜ธ์˜ ๋ฒ”์œ„:

์‹ค์ œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ 45๊นŒ์ง€์ด๋ฏ€๋กœ ์ด ๋ฒ”์œ„๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ random(45)+1์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 4.2 ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”

- lottoNumbers = new int[6];

๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ์ •์ˆ˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋œ 6์„ ์ง€์ •ํ•œ๋‹ค.

 

4.3 ๋ฐ˜๋ณต๋ฌธ

while (count < 6) ;

๋ฐฐ์—ด์ด 6๊ฐœ์˜ ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ํฌํ•จํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณต.

 

< ๋ฐฐ์—ด ์ธ๋ฑ์Šค์™€ count์˜ ๊ด€๊ณ„ >

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, lottoNumbers = new int[6]๋กœ ์ƒ์„ฑํ•œ ๋ฐฐ์—ด์€ ํฌ๊ธฐ๊ฐ€ 6์ด๋ฉฐ, ์ธ๋ฑ์Šค๋Š” 0,1,2,3,4,5์ด๋‹ค.์ฆ‰ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋Š” lottoNumbers[0], ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” lottoNumbers[5]์ด๋‹ค.

 

- count ๋ณ€์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

count = 0์ผ ๋•Œ๋Š” ์ฒซ๋ฒˆ์งธ์ž๋ฆฌ๋ฅผ ์ฑ„์šด๋‹ค.count = 5์ผ ๋–„๋Š” ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๋ฅผ ์ฑ„์šด๋‹ค. count < 6 ์กฐ๊ฑด์€ count๊ฐ€ 6์ด ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค. 

 

4.4 ์กฐ๊ฑด๋ฌธ

if (isUnique(number)) :

์ƒ์„ฑ๋œ ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด์— ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋œ๋‹ค.

 

< lottoNumber[count] = number;์— [count]๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  >

- ๋ฐฐ์—ด ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •๊ณผ ๊ด€๊ณ„ :

lottoNumbers = new int[6];๋กœ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ฉด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 6์œผ๋กœ ๊ณ ์ •๋˜๊ณ , 

๊ฐ ์š”์†Œ๋Š” ๊ธฐ๋ณธ๊ฐ’์ธ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค.ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒ ์ •ํ•ด์กŒ์„ ๋ฟ, ๊ฐ ์ž๋ฆฌ์— ์–ด๋–ค ๊ฐ’์„ ์ €์žฅํ• ์ง€๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

- [count]์˜ ์—ญํ•  :

๋ฐฐ์—ด์˜ ํŠน์ • ์œ„์น˜(count)์— ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋กœ๋˜ ๋ฒˆํ˜ธ(number)๋ฅผ ์ €์žฅํ•œ๋‹ค.์ฆ‰, lottoNumbers[count]๋Š” ๋ฐฐ์—ด์˜ count๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ํ•ด๋‹น ์œ„์น˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ์ฒ˜์Œ์—๋Š” count = 0์ด๋ฏ€๋กœ lottoNumbers[0]์— ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.๋‹ค์Œ์— count++๊ฐ€ ๋˜๋ฉด lottoNumbers[1]์— ๊ฐ’์„ ๋„ฃ๋Š” ์‹์œผ๋กœ ๋ฐฐ์—ด์ด ์ฑ„์›Œ์ง„๋‹ค. 

 

4.5 ๋ฐฐ์—ด๊ณผ ์ธ๋ฑ์Šค ๊ด€๋ฆฌ

๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค count๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•  ์œ„์น˜๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. 

์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค count++๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 


5. ๋กœ์ง ํ๋ฆ„

 1) ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” : ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด ์ƒ์„ฑ

 2) ์ˆซ์ž ์ƒ์„ฑ : random.nextInt(45) + 1๋กœ 1๋ถ€ํ„ฐ 45 ์‚ฌ์ด์˜ ์ˆซ์ž ์ƒ์„ฑ.

 3) ์ค‘๋ณต ๊ฒ€์‚ฌ : 

isUnique๋ฉ”์„œ๋“œ๋กœ ํ˜„์žฌ ๋ฐฐ์—ด์— ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ.

์ค‘๋ณต๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐฐ์—ด์— ์ถ”๊ฐ€.

 4) ๋ฐฐ์—ด ์ฑ„์šฐ๊ธฐ :

์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฐฐ์—ด์— 6๊ฐœ์˜ ๊ณ ์œ ํ•œ ์ˆซ์ž๋ฅผ ์ €์žฅ.

 5) ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ 

 

 

+ Recent posts