본문 바로가기
코딩라이브러리/Dart

[Dart] for, while 반복문 (with 백준 2446, 2522)

by 유니네 라이브러리 2024. 7. 18.

Dart의 for 반복문 사용

  • 표준 loop 방법
    반복 카운터 동안 loop 실행
void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  //반복카운터(문자열 길이)만큼 For 문 돌면서 대문자 변환  
  for (var i = 0; i < message.length; i++) {
    chgUpper += message[i].toUpperCase();    
  }
  print(chgUpper); //DART IS FUN
}
  • Iterable 유형 반복 시 사용 방법
    List 또는 Set과 같은 Iterable 유형을 반복할 때 현재 반복 카운터를 알 필요가 없다.
    이 경우 더 깔끔한 코드를 위해 for-in 루프를 사용한다.
void main() {
  //List 또는 Set과 같은 Iterable 유형 반복 시 반복 카운터 없이 사용
  //이 경우 더 깔끔한 코드로 for-in 루프를 사용한다.
  List candidates = ['yuneene','yun','lee'];
  for (final candidate in candidates) {
    print(candidate);
    /*
      yuneene
      yun
      lee
    */
  }
}

Dart의 while 문 사용

표준 loop 방법

  • while (조건문) 사용 : loop 전 조건 판단
void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  int i = 0;
  //반복카운터(문자열 길이)만큼 while 문 돌면서 대문자 변환
  while (i < message.length) {
    chgUpper += message[i].toUpperCase();    
    i++;
  }
  print(chgUpper); //DART IS FUN  
}
  • while(true)과 break 사용
void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  int i = 0;
  //반복카운터(문자열 길이)만큼 while 문 돌면서 대문자 변환
  //조건에 걸릴 때 break 사용
  while (true) {
    if (i >= message.length) {
      break;
    }
    chgUpper += message[i].toUpperCase();    
    i++;
  }
  print(chgUpper); //DART IS FUN
}
  • do ~ while (조건문); 사용
    • loop 이후에 조건 판단
void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  int i = 0;
  //반복카운터(문자열 길이)만큼 while 문 돌면서 대문자 변환
  do {
    chgUpper += message[i].toUpperCase();    
    i++;
  } while (i < message.length);
  print(chgUpper); //DART IS FUN  
}

 

▶ for 조건문 연습 백준 문제 풀이

  • 백준 사이트 컴파일 언어에는 Dart는 없다.
  • 코딩 연습용

☞ 백준 사이트 : https://www.acmicpc.net/problem/2446

//입력을 받기하기 위해서는 dart:io 라이브러리를 import 한다. 
import 'dart:io';
void main() {  
  int? N = int.parse(stdin.readLineSync()!);
  int tLine = 2*N-1;  
  String star = "";
  for (int i=0; i < tLine; i++) {    
    star = "";
    if (i < N) {
      for (int j=0; j < i; j++) star += " ";
      for (int j=0; j < tLine-(i*2); j++) star += "*";
      print(star);
    } else {
      for (int j=0; j < tLine-i-1; j++) star += " ";
      for (int j=0; j < ((i*2)-tLine) + 2; j++) star += "*";
      print(star);
    }
  }
}
/*
5
*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********
*/

 

▶ while 조건문 연습 백준 문제 풀이

☞ 백준 사이트 : https://www.acmicpc.net/problem/2522

  • while 조건문 사용
//입력을 받기하기 위해서는 dart:io 라이브러리를 import 한다. 
import 'dart:io';
void main() {  
  
  //while 조건문 사용
  int N = int.parse(stdin.readLineSync()!);
  int tLine = 2*N-1;
  int i = 1;
  String star = "";
  while (i <= tLine) {
    star = "";
    if (i <= N) {
      for (int j=0; j<N-i; j++) star += " ";
      for (int j=0; j<i; j++) star += "*";
      print(star); 
    } else {
      for (int j=0; j<i-N; j++) star += " ";
      for (int j=0; j<(N-(i-N)); j++) star += "*";
      print(star); 
    }
    i += 1;
  }
}
/*
3
  *
 **
***
 **
  *
*/
  • while 조건문 break 사용
//입력을 받기하기 위해서는 dart:io 라이브러리를 import 한다. 
import 'dart:io';
void main() {  
  
  //while break 사용
  int N = int.parse(stdin.readLineSync()!);
  int tLine = 2*N-1;
  int i = 1;
  String star = "";
  while (true) {
    star = "";
    if (i > tLine) break; //조건 break 사용
    if (i <= N) {
      for (int j=0; j<N-i; j++) star += " ";
      for (int j=0; j<i; j++) star += "*";
      print(star); 
    } else {
      for (int j=0; j<i-N; j++) star += " ";
      for (int j=0; j<(N-(i-N)); j++) star += "*";
      print(star); 
    }
    i += 1;
  }
}
/*
3
  *
 **
***
 **
  *
*/