연습 문제 : 로또 번호 생성기

Jaemyeong Lee·2024년 12월 11일
0

입문자를 위한 UE5

목록 보기
24/60

목표

  • 1~45 사이의 숫자 중 6개의 무작위 번호를 생성.
  • 중복되지 않도록 숫자를 배열에 추가.

핵심 기능

  1. Contains를 이용한 중복 확인.
  2. Add Unique를 활용한 간단한 중복 제거.
  3. Shuffle을 이용한 무작위 섞기 후 추출.

1. Contains 사용하기

구현 설명

  • While Loop:

    • Numbers 배열의 길이가 6이 될 때까지 반복.
    • 조건: 배열의 길이가 6보다 작은 경우에만 반복.
  • Random Integer in Range:

    • 1~45 사이의 무작위 숫자를 생성.
  • Contains 노드:

    • 생성된 숫자가 이미 배열에 있는지 확인.
    • True: 배열에 존재 → 추가하지 않음.
    • False: 배열에 존재하지 않음 → 배열에 추가.
  • Set Array Elem:

    • 중복되지 않는 숫자를 배열의 특정 인덱스에 추가.
    • Size to Fit 체크를 통해 배열이 자동으로 확장되도록 설정.

장점

  • 중복을 명시적으로 체크하여 제어 가능.
  • 코드가 직관적이며 디버깅이 용이.

단점

  • While Loop를 사용하기 때문에 제어식 조건을 명확히 설정해야 함. 무한 루프 발생 가능.

2. Add Unique 사용하기

구현 설명

  • While Loop:

    • Numbers 배열의 길이가 6이 될 때까지 반복.
    • 조건: 배열 길이가 6보다 작으면 반복.
  • Random Integer in Range:

    • 1~45 사이의 무작위 숫자를 생성.
  • Add Unique:

    • 숫자를 배열에 추가하려 할 때, 이미 배열에 존재하면 추가하지 않음.
    • 중복 체크를 자동으로 처리.

장점

  • Contains와 같은 중복 체크 없이도 간단히 구현 가능.
  • 노드 수가 줄어들어 블루프린트가 간결해짐.

단점

  • 내부적으로 중복을 체크하기 때문에 효율성이 약간 떨어질 수 있음.

3. Shuffle 사용하기

구현 설명

  • Temp 배열 생성:

    • 1~45까지의 숫자를 모두 추가.
  • Shuffle 노드:

    • Temp 배열의 숫자를 무작위로 섞음.
  • For Loop:

    • 섞인 Temp 배열에서 첫 6개의 숫자를 Numbers 배열에 추가.

장점

  • 중복 체크를 하지 않아도 무작위로 섞인 배열에서 숫자를 가져오기 때문에 간단.
  • 구현이 직관적이고 성능도 효율적.

단점

  • Shuffle 과정을 이해하지 못하면 코드를 읽는 데 시간이 걸릴 수 있음.

전체 로직의 흐름

  1. Event Begin Play:

    • 로또 번호를 생성하는 이벤트가 실행됨.
  2. Print Numbers:

    • Numbers 배열의 모든 값을 출력.
  3. 번호 생성 로직:

    • Contains, Add Unique, 또는 Shuffle 중 하나의 방법을 사용하여 Numbers 배열에 중복 없는 번호를 추가.
  4. 출력 결과:

    • Numbers 배열에 담긴 6개의 로또 번호를 확인.

비교 및 추천

방법장점단점
Contains 사용하기중복 체크 과정을 명시적으로 제어 가능.노드가 많아지며 복잡도가 증가.
Add Unique 사용하기간단하고 코드가 간결.내부 중복 체크로 성능 약간 저하.
Shuffle 사용하기가장 효율적이고 간단한 구현.Temp 배열 생성과 섞기 과정이 필요.

profile
李家네_공부방

0개의 댓글