목표
- 1~45 사이의 숫자 중 6개의 무작위 번호를 생성.
- 중복되지 않도록 숫자를 배열에 추가.
핵심 기능
Contains
를 이용한 중복 확인.
Add Unique
를 활용한 간단한 중복 제거.
Shuffle
을 이용한 무작위 섞기 후 추출.
1. Contains 사용하기
구현 설명
-
While Loop:
Numbers
배열의 길이가 6이 될 때까지 반복.
- 조건: 배열의 길이가 6보다 작은 경우에만 반복.
-
Random Integer in Range:
-
Contains 노드:
- 생성된 숫자가 이미 배열에 있는지 확인.
- True: 배열에 존재 → 추가하지 않음.
- False: 배열에 존재하지 않음 → 배열에 추가.
-
Set Array Elem:
- 중복되지 않는 숫자를 배열의 특정 인덱스에 추가.
Size to Fit
체크를 통해 배열이 자동으로 확장되도록 설정.
장점
- 중복을 명시적으로 체크하여 제어 가능.
- 코드가 직관적이며 디버깅이 용이.
단점
- While Loop를 사용하기 때문에 제어식 조건을 명확히 설정해야 함. 무한 루프 발생 가능.
2. Add Unique 사용하기
구현 설명
-
While Loop:
Numbers
배열의 길이가 6이 될 때까지 반복.
- 조건: 배열 길이가 6보다 작으면 반복.
-
Random Integer in Range:
-
Add Unique:
- 숫자를 배열에 추가하려 할 때, 이미 배열에 존재하면 추가하지 않음.
- 중복 체크를 자동으로 처리.
장점
Contains
와 같은 중복 체크 없이도 간단히 구현 가능.
- 노드 수가 줄어들어 블루프린트가 간결해짐.
단점
- 내부적으로 중복을 체크하기 때문에 효율성이 약간 떨어질 수 있음.
3. Shuffle 사용하기
구현 설명
-
Temp 배열 생성:
-
Shuffle 노드:
-
For Loop:
- 섞인 Temp 배열에서 첫 6개의 숫자를 Numbers 배열에 추가.
장점
- 중복 체크를 하지 않아도 무작위로 섞인 배열에서 숫자를 가져오기 때문에 간단.
- 구현이 직관적이고 성능도 효율적.
단점
- Shuffle 과정을 이해하지 못하면 코드를 읽는 데 시간이 걸릴 수 있음.
전체 로직의 흐름
-
Event Begin Play:
-
Print Numbers:
-
번호 생성 로직:
Contains
, Add Unique
, 또는 Shuffle
중 하나의 방법을 사용하여 Numbers 배열에 중복 없는 번호를 추가.
-
출력 결과:
- Numbers 배열에 담긴 6개의 로또 번호를 확인.
비교 및 추천
방법 | 장점 | 단점 |
---|
Contains 사용하기 | 중복 체크 과정을 명시적으로 제어 가능. | 노드가 많아지며 복잡도가 증가. |
Add Unique 사용하기 | 간단하고 코드가 간결. | 내부 중복 체크로 성능 약간 저하. |
Shuffle 사용하기 | 가장 효율적이고 간단한 구현. | Temp 배열 생성과 섞기 과정이 필요. |