// 정수형 변수 선언
int a = 10;
// 실수형 변수 선언
double b = 3.14;
// 숫자형 변수 선언
num c = 1;
// 처음 지정한 테이터 타입으로 생성 (Dynamic Type)
var number = 1;
String name = "John";
String greeting = 'Hello, $name!';
String multiLine = '''
Hello.
This is multiline String.
''';
// bool : true or false
bool isTrue = true;
bool isFalse = false;
// int형 List 선언
List<int> numbers = [1, 2, 3];
// String형 List 선언
List<String> fruits = ["apple", "banana", "orange"];
// int형 Set 선언
Set<int> numberSet = {1, 2, 3};
// String형 Set 선언
Set<String> fruitSet = {"apple", "banana", "orange"};
// String : Int 형 Map 선언
Map<String, int> ages = {"John": 30, "Jane": 25};
// String : String 형 Map 선언
Map<String, String> colors = {"apple": "red", "banana": "yellow", "orange": "orange"};
// final 변수
final int finalValue = Random().nextInt(10);
// const 변수
const int constValue = 5;
// final 변수 재할당 (오류)
finalValue = 10;
// const 변수 재할당 (오류)
constValue = 10;
// final 변수 변경 (정상)
final int finalNewValue = finalValue + 5;
// const 변수 변경 (오류)
const int constNewValue = constValue + 5;
print("a + b = ${a + b}"); // 더하기
print("a - b = ${a - b}"); // 빼기
print("a * b = ${a * b}"); // 곱하기
print("a / b = ${a / b}"); // 나누기
print("a % b = ${a % b}"); // 나머지
print("a > b : ${a > b}");
print("a < b : ${a < b}");
print("a >= b : ${a >= b}");
print("a <= b : ${a <= b}");
print("a == b : ${a == b}");
print("a != b : ${a != b}");
bool x = true;
bool y = false;
print("x && y : ${x && y}"); // => false (AND)
print("x || y : ${x || y}"); // => true (OR)
int c = 5;
c += 3; // c = c + 3;
c -= 2; // c = c - 2;
c *= 4; // c = c * 4;
c ~/= 3; // c = c ~/ 3;
c %= 2; // c = c % 2;
int d = 7;
d++; // d = d + 1;
print("d : $d");
d--; // d = d - 1;
print("d : $d");
int number = 42;
if (number > 50){ // number = 42 이므로 false
print('number is greater than 50');
} else {
print('number is less than or equal to 50');
}
String fruit = 'apple';
switch (fruit) {
case 'apple':
print('This is an apple');
break;
case 'banana':
print('This is a banana');
break;
default:
print('This is not a fruit');
}
List<int> numbers = [1, 2, 3, 4, 5];
for (int number in numbers) {
print(number);
}
int count = 0;
while (count < 5) {
print(count);
count++;
}
int i = 0;
do {
print(i);
i++;
} while (i < 3);
while <=> do-while 차이점
while문은 조건을 먼저 읽은 후에 코드 실행
do-while문은 일단 실행 한 후에 조건 읽음
=======================================================================
위에서 나온 기본 문법 토대로 간단한 369 게임을 진행 할 예정이다.
⦁ 4명의 플레이어 Player 1, Player 2, Player 3, Player4가 참가
⦁ 플레이어는 차례대로 순서가 돌아감
⦁ 30의 배수는 "ahh" 출력
⦁ 3의 배수에는 "clap"을 출력
⦁ 10의 배수는 "rool" 을 나머지는 숫자를 출력
⦁ 우선순위는 ahh > clap > rool > 숫자
⦁ 범위 : 1에서 100까지
⦁ 총 clap.rool.ahh의 총 갯수 출력
⦁ 플레이어당 clap 갯수 출력
⦁ 가장많은 clap을 한 player를 출력
List를 사용하여 플레이어가 클랩 할때마다 +1을 할 예정이다.
// 플레이어마다 clap개수
List<int> numbers = [0,0,0,0];
계산 할 변수들을 0으로 초기화해준다
// 총 clap / rool / ahh 카운트 개수
int clapCount = 0;
int roolCount = 0;
int ahhCount = 0;
// maxNumber(최대값), topPerson(최대값을 보유한 플레이어)
int maxNumber = 0;
int topPerson = 0;
for문을 사용하여 1~100까지 반복문 작성
for(int i = 1; i < 101; i++){
if (i % 30 == 0) {
// 총 ahhCount 1 증가
ahhCount += 1;
// (i-1)%4 + 1 을 사용하여 현재 플레이어 계산
print('player${(i-1)%4 + 1} : ahh');
} else if (i % 10 == 0) {
// 총 roolCount 1 증가
roolCount += 1;
// (i-1)%4 + 1 을 사용하여 현재 플레이어 계산
print('player${(i-1)%4 + 1} : rool');
} else if (i% 3 == 0){
// 총 clapCount 1 증가
clapCount += 1;
// 해당하는 플레이어의 List에 clapCount +1 추가
numbers[(i-1)%4] = numbers[(i-1)%4] + 1
// (i-1)%4 + 1 을 사용하여 현재 플레이어 계산
print('player${(i-1)%4 + 1} : clap');
} else{
// (i-1)%4 + 1 을 사용하여 현재 플레이어 계산
print('player${(i-1)%4 + 1} : $i');
}
}
총 갯수 출력
print('clap의 총 갯수: $clapCount');
print('rool의 총 갯수: $roolCount');
print('ahh의 총 갯수: $ahhCount');
for문을 4번 반복하여 플레이어들의 clap 갯수 출력 및 maxnumber 계산을 하여 topPerson을 구한다
// 플레이어마다 clap 갯수 및 maxnumber 계산
for(int i = 0; i < 4 ; i++){
if(numbers[i] > maxNumber){
maxNumber = numbers[i];
topPerson = i + 1;
}
print('Player ${i+1} : ${numbers[i]}');
}
print('가장 많은 clap을 출력한 플레이어: Player $topPerson');
topPerson을 구하는 방법은 여러가지 있지만(reduce, sort, fold) 이 글에서는 오로지 기본 문법만을 이용하여 문제해결을 해보았다.
