Study/Flutter, Dart

[Flutter 플러터] Lotto 프로그램 만들기 (중복 제외, 오름차순 정렬까지)

1.jun 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
반응형