-
[Flutter 플러터] Lotto 프로그램 만들기 (중복 제외, 오름차순 정렬까지)Study/Flutter, Dart 2024. 9. 27. 15:46728x90반응형
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); }
728x90List<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반응형'Study > Flutter, Dart' 카테고리의 다른 글
[Flutter 플러터] 이메일 보내기 구현 (ex. 문의하기) (1) 2024.12.25 [Flutter 플러터] Switch : 껐다 켰다 스위치 (1) 2024.12.10 [Flutter 플러터] 인스타그램 앱 따라 만들기 (0) 2024.09.12 [Flutter 플러터] 가위바위보 앱 따라 만들기 (1) 2024.09.10 [Flutter 플러터] 9. Flutter에서 화면 이동하기 (2) 2024.08.27