ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Flutter 플러터] Lotto 프로그램 만들기 (중복 제외, 오름차순 정렬까지)
    Study/Flutter, Dart 2024. 9. 27. 15:46
    728x90
    반응형

     

    Lotto 프로그램 

    import 'dart:math';
    
    
    List<int> lottoNumber(){
    
      List<int> lottoList = [];
    
      var num;
    
      for(int i = 0; i<6; i++){
        num = Random().nextInt(45) + 1;
        lottoList.add(num);
      }
    
      print('당첨번호');
      print(lottoList);
      return lottoList;
    }
    
    
    List<int> myNumber(){
      
      List<int> myList = [];
    
      var num;
    
      for(int i = 0; i<6; i++){
        num = Random().nextInt(45) + 1;
        myList.add(num);
      }
    
      print('내 추첨번호');
      print(myList);
      return myList;
    }
    
    
    void checkNumber(lottoList, myList){
    
      int match = 0;
    
      for(int lotto in lottoList){
        for(int me in myList){
          if(lotto == me) {
            match ++;
            print('당첨번호: $lotto번');
          }
        }
      }
      print('$match개 당첨되었습니다!');
    }
    
    void main(){
      List<int>lottoFinal = lottoNumber();
      List<int>myFinal = myNumber();
    
      checkNumber(lottoFinal, myFinal);
    }

     

    반응형

     

    1. lottoNumber(), myNumber() 함수를 만들어서 정수형 리스트를 반환한다.

     

    2. for문을 사용하여, 1~45중 랜덤하게 뽑아, lottoList, myList에 넣는다.

     

    3. checkNumber 함수를 통해 lottoList의 각 번호와 myList의 각 번호를 확인하며, 번호가 일치하면 match를 1씩 증가시키고, 일치하는 번호를 출력한다.

     

    4. 로또번호가 총 몇개 당첨되었는지 출력한다.

     

     

    문제점
    1) 로또번호와 내 추첨번호에서 각 중복번호가 일어난다. 
    2) 리스트가 정렬되지 않아서 보기 불편하다.

     

     

     

     

     

     


    Lotto 프로그램 - 중복제거 1

    list를 set으로 바꿔준다.

    set은 중복된 값을 제외한다.

    import 'dart:math';
    
    Set<int> lottoNumber(){
    
      final Set<int> lottoSet = {};
    
      while(lottoSet.length != 6){
        lottoSet.add(Random().nextInt(45) + 1); // Random().nextInt(45): 0~44 정수형 난수 반환
      }
    
      print('당첨번호');
      print(lottoSet.toList());
      return lottoSet;
    }
    
    
    Set<int> myNumber(){
    
      Set<int> mySet = {};
    
      while(mySet.length != 6){
        mySet.add(Random().nextInt(45)+1);
      }
    
      print('내 추첨번호');
      print(mySet.toList());
      return mySet;
    }
    
    
    void checkNumber(lottoSet, mySet){
    
      int match = 0;
    
      for(int lotto in lottoSet){
        for(int me in mySet){
          if(lotto == me) {
            match ++;
            print('당첨번호: $lotto');
          }
        }
      }
      print('$match개 당첨되었습니다!');
    }
    
    void main(){
      Set<int>lottoFinal = lottoNumber();
      Set<int>myFinal = myNumber();
    
      checkNumber(lottoFinal, myFinal);
    }

     

     

     

     

     

     


    Lotto 프로그램 - 중복제거 2

    List.generate를 사용한다.

    List<int> lottoNumber() {
      var number = (List<int>.generate(45, (i) => i + 1)..shuffle()).sublist(0, 6);
      print('당첨번호');
      print(number);
      return number;
    }
    
    List<int> myNumber() {
      var number2 = (List<int>.generate(45, (i) => i + 1)..shuffle()).sublist(0, 6);
      print('내 추첨번호');
      print(number2);
      return number2;
    }
    
    void checkNumber(List<int> number, List<int> number2) {
      int match = 0;
    
      for (int lotto in number) {
        for (int myNum in number2) {
          if (lotto == myNum) {
            match++;
            print('당첨번호: $lotto');
          }
        }
      }
      print('$match개의 당첨번호가 있습니다!');
    }
    
    void main() {
      List<int> lottoFinal = lottoNumber();
      List<int> myFinal = myNumber();
    
      checkNumber(lottoFinal, myFinal);
    }

     

    728x90

     

    List<int>.generate(45, (i) => i+1) : [0,1,2,3......44]의 숫자를 생성하고 각 인덱스에 1을 더한다. → [1,2,3,4.....45]

     

    ..shuffle() : 리스트의 순서를 무작위로 섞는다.

     

    .sublist(0,6) : 인덱스 0, 1, 2, 3, 4, 5 를 뽑는다.  (끝 인덱스는 포함하지 않는다.)

     

     

     

     

     


    Lotto 프로그램 - 중복제거 + 정렬

    list.sort(); 를 활용해서 오름차순으로 정렬해준다.

    List<int> lottoNumber() {
      var number = ((List<int>.generate(45, (i) => i + 1)..shuffle()).sublist(0, 6));
      number.sort();
      print('당첨번호');
      print(number);
      return number;
    }
    
    List<int> myNumber() {
      var number2 = (List<int>.generate(45, (i) => i + 1)..shuffle()).sublist(0, 6);
      number2.sort();
      print('내 추첨번호');
      print(number2);
      return number2;
    }
    
    void checkNumber(List<int> number, List<int> number2) {
      int match = 0;
    
      for (int lotto in number) {
        for (int myNum in number2) {
          if (lotto == myNum) {
            match++;
            print('당첨번호: $lotto');
          }
        }
      }
      print('$match개의 당첨번호가 있습니다!');
    }
    
    void main() {
      List<int> lottoFinal = lottoNumber();
      List<int> myFinal = myNumber();
    
      checkNumber(lottoFinal, myFinal);
    }

     

     

     

     

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.