코딩라이브러리/Dart

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

유니네 라이브러리 2024. 7. 18. 11:13

Dart에서 for문과 while문은 코드를 반복 실행할 때 사용된다.

이번 글에서는 기본적인 for문, while문, do-while문을 배우고,

이를 활용해 백준 문제(2446번, 2522번)를 Dart로 해결해본다. 🚀

 

1. Dart의 for문 사용법

 

📌 기본 for문

 

for 문은 반복 횟수가 정해져 있을 때 사용한다.

void main() {
  String message = 'Dart is fun';
  String chgUpper = "";

  // 문자열 길이만큼 반복하며 대문자로 변환
  for (var i = 0; i < message.length; i++) {
    chgUpper += message[i].toUpperCase();
  }

  print(chgUpper); // DART IS FUN
}

 

📌 for-in 반복문

 

for-in 문은 리스트(List) 또는 집합(Set) 같은 Iterable 객체를 반복할 때 사용한다.

void main() {
  List<String> candidates = ['yuneene', 'yun', 'lee'];

  // 리스트의 각 요소를 순차적으로 출력
  for (final candidate in candidates) {
    print(candidate);
  }
}
/*
출력값:
yuneene
yun
lee
*/

 

2. Dart의 while문 사용법

 

📌 while문

 

while 문은 반복 조건이 만족할 때 실행된다.

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 사용

 

반복을 강제로 종료하고 싶다면 while(true)를 사용하고 break 문을 활용할 수 있다.

void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  int i = 0;

  while (true) {
    if (i >= message.length) {
      break; // 반복 종료
    }
    chgUpper += message[i].toUpperCase();
    i++;
  }

  print(chgUpper); // DART IS FUN
}

 

📌 do-while문

 

do-while 문은 반복을 먼저 실행한 후, 조건을 확인한다.

void main() {
  String message = 'Dart is fun';
  String chgUpper = "";
  int i = 0;

  do {
    chgUpper += message[i].toUpperCase();
    i++;
  } while (i < message.length);

  print(chgUpper); // DART IS FUN
}

 

3. for문 연습: 백준 2446번 (별 찍기 - 9)

 

백준 문제 2446번을 Dart의 for문을 활용하여 해결해 보자.

 

🔗 문제 링크: 백준 2446번 - 별 찍기 9

 

📌 문제 설명

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

첫째 줄부터 (2×N-1)번째 줄까지 별을 출력한다.

 

📌 Dart 코드 풀이

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 += "*";
    } 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

출력:
*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

 

4. while문 연습: 백준 2522번 (별 찍기 - 12)

 

이번에는 Dart의 while문을 활용하여 백준 문제 2522번을 해결해 본다.

 

🔗 문제 링크: 백준 2522번 - 별 찍기 12

 

📌 문제 설명

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

첫째 줄부터 (2×N-1)번째 줄까지 별을 출력한다.

 

📌 Dart 코드 풀이 (while문 사용)

import 'dart:io';

void main() {
  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 += "*";
    } else {
      for (int j = 0; j < i - N; j++) star += " ";
      for (int j = 0; j < (N - (i - N)); j++) star += "*";
    }
    print(star);
    i++;
  }
}

 

📌 입력값 & 출력값 예시

입력:
3

출력:
  *
 **
***
 **
  *

 

5. while문 + break 활용: 백준 2522번

import 'dart:io';

void main() {
  int N = int.parse(stdin.readLineSync()!);
  int tLine = 2 * N - 1;
  int i = 1;
  String star = "";

  while (true) {
    if (i > tLine) break; // 반복 종료

    star = "";
    if (i <= N) {
      for (int j = 0; j < N - i; j++) star += " ";
      for (int j = 0; j < i; j++) star += "*";
    } else {
      for (int j = 0; j < i - N; j++) star += " ";
      for (int j = 0; j < (N - (i - N)); j++) star += "*";
    }
    print(star);
    i++;
  }
}

 

6. 마무리

 

이번 글에서는 Dart의 for문, while문, do-while문의 기본 사용법을 익히고,

이를 활용하여 **백준 문제(2446, 2522)**를 해결해 보았다.

 

📌 정리

for 문: 반복 횟수가 정해진 경우 사용

while 문: 조건이 만족할 때까지 반복

do-while 문: 반복을 먼저 실행한 후, 조건 확인

while(true) + break: 특정 조건에서 반복 종료