
์๋ฐ ๊ฐ์๋ฅผ ๋ค์์๋, 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) ๊ฒฐ๊ณผ ๋ฐํ