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
반응형