[LMS] Dart 기본 문법을 활용한 Team Challenge

nouveau·2023년 11월 29일
0
post-thumbnail

Challenge Mission

4명의 플레이어 Player 1, Player 2, Player 3, Player 4가 참가

플레이어는 차례대로 순서가 돌아가며

  • 30의 배수는 "ahh" 출력
  • 3의 배수에는 "clap" 출력
  • 10의 배수는 "rool" 출력

범위 : 1에서 100까지

결과 값 :
1. clap, rool, ahh 의 총 개수 출력
2. player 당 clap을 했는지 출력
3. 가장 많은 clap을 한 player를 출력

결과

Player 1 : 1
Player 2 : 2
Player 3 : clap
Player 4 : 4
Player 1 : 5
Player 2 : clap
Player 3 : 7
Player 4 : 8
Player 1 : clap
Player 2 : rool
Player 3 : 11
Player 4 : clap
Player 1 : 13
...
Player 3 : 95
Player 4 : clap
Player 1 : 97
Player 2 : 98
Player 3 : clap
Player 4 : rool

  • clap : 총 30개, rool : 총 7개, ahh : 총 3개
  • Player1 clap 총 8개
  • Player2 clap 총 6개
  • Player3 clap 총 9개
  • Player4 clap 총 7개
  • 가장 많은 clap을 한 유저는 : Player 3

설명

void main() {
  List<String> players = ['Player 1', 'Player 2', 'Player 3', 'Player 4'];
  List<int> clapCountsByPlayer = [0, 0, 0, 0];

  int currentPlayerIndex = 0;
  int ahhCount = 0;
  int clapCount = 0;
  int roolCount = 0;

  for (int i = 1;i<= 100;i++){
    String currentPlayer = players[currentPlayerIndex];
    String flag = "";

    if ( i % 30 == 0 ) {
      flag = "ahh";
      ahhCount += 1;
    } else if ( i % 3 == 0 ) {
      flag = "clap";
      clapCount += 1;
      clapCountsByPlayer[currentPlayerIndex] += 1;
    } else if ( i % 10 == 0 ) {
      flag = "rool";
      roolCount += 1;
    } else {
      flag = "$i";
    }

    print("$currentPlayer : $flag");

    currentPlayerIndex = (currentPlayerIndex + 1) % players.length;
  }

  int maxClapUserIndex = 0;
  int maxClapCount = 0;

  for (int i = 0;i < clapCountsByPlayer.length;i++) {
    int currentCalpCount = clapCountsByPlayer[i];

    if (maxClapCount < currentCalpCount) {
      maxClapCount = currentCalpCount;
      maxClapUserIndex = i;
    }
  }

  print("==================================");
  print("- clap : 총 $clapCount개, rool : 총 $roolCount개, ahh : 총 $ahhCount개");
  print("==================================");
  print("- Player1 clap 총 ${clapCountsByPlayer[0]}개");
  print("- Player2 clap 총 ${clapCountsByPlayer[1]}개");
  print("- Player3 clap 총 ${clapCountsByPlayer[2]}개");
  print("- Player4 clap 총 ${clapCountsByPlayer[3]}개");
  print("==================================");
  print("가장 많은 clap을 한 유저는 : ${players[maxClapUserIndex]}");
}
  • players, clapCountsByPlayer 두 배열의 동일 인덱스에 플레이어의 이름과 clap count 를 선언
  • for문을 순회하는 동안 i 값을 30, 3, 10으로 나눈 값의 몫이 0인 경우 각각의 flag와 clapCount와 각 유저의 clapCount를 저장( or +1 )하며, 현재 플레이어를 변경 하고, for문을 통해 1 ~ 100까지 반복 실행
  • clapCountsByPlayer를 순회하여 가장 큰 숫자와 해당 숫자의 플레이어를 변수에 저장

0개의 댓글