본문 바로가기
Dart/Dart 100제

Dart 100제 81 ~ 85 (기타)

by Maccrey Coding 2024. 8. 26.
반응형

 

81. 날짜 계산하기: 두 날짜 사이의 차이를 계산하세요.

문제
두 날짜를 입력받아, 두 날짜 사이의 차이를 일(day) 단위로 계산하는 프로그램을 작성하세요.

풀이
Dart에서는 DateTime 클래스를 사용하여 날짜를 쉽게 다룰 수 있습니다. 두 날짜 사이의 차이는 difference 메서드를 사용하여 구할 수 있습니다.

void main() {
  DateTime date1 = DateTime(2024, 8, 1);
  DateTime date2 = DateTime(2024, 8, 26);

  Duration difference = date2.difference(date1);

  print('두 날짜 사이의 차이는 ${difference.inDays}일 입니다.');
}

설명

  • DateTime 객체를 사용하여 날짜를 설정하고, difference 메서드를 통해 두 날짜의 차이를 구합니다.
  • inDays 속성을 이용해 차이를 일(day) 단위로 변환하여 출력합니다.

82. 파일 압축하기: 파일을 압축하고 압축 해제하는 프로그램을 작성하세요.

문제
Dart를 사용하여 파일을 압축하고, 압축된 파일을 해제하는 프로그램을 작성하세요.

풀이
Dart의 archive 패키지를 사용하면 파일을 쉽게 압축하고 해제할 수 있습니다.

import 'dart:io';
import 'package:archive/archive.dart';
import 'package:archive/archive_io.dart';

void main() {
  // 파일 압축하기
  var encoder = ZipFileEncoder();
  encoder.create('example.zip');
  encoder.addFile(File('example.txt'));
  encoder.close();

  // 파일 압축 해제하기
  var bytes = File('example.zip').readAsBytesSync();
  var archive = ZipDecoder().decodeBytes(bytes);

  for (var file in archive) {
    var filename = file.name;
    if (file.isFile) {
      var data = file.content as List<int>;
      File('decompressed_$filename')
        ..createSync(recursive: true)
        ..writeAsBytesSync(data);
    }
  }
}

설명

  • archive 패키지를 사용하여 ZIP 파일을 만들고, 기존 파일을 압축합니다.
  • 압축된 ZIP 파일을 해제하고, 해제된 파일을 새로운 파일로 저장합니다.

83. 중복 제거하기: 리스트에서 중복된 값을 제거하고 출력하세요.

문제
리스트에 있는 중복된 값을 제거하고, 중복이 제거된 리스트를 출력하는 프로그램을 작성하세요.

풀이
Dart에서 리스트의 중복을 제거하려면, Set을 사용할 수 있습니다. Set은 고유한 값만을 저장하므로 중복된 값을 자동으로 제거해줍니다.

void main() {
  List<int> numbers = [1, 2, 2, 3, 4, 4, 5, 6, 6];
  
  List<int> uniqueNumbers = numbers.toSet().toList();

  print('중복 제거 후: $uniqueNumbers');
}

설명

  • 리스트를 Set으로 변환하면 중복이 제거됩니다.
  • 다시 Set을 리스트로 변환하여 중복이 제거된 결과를 출력합니다.

84. 내장 함수 사용하기: Dart 내장 함수를 사용하여 배열의 최솟값과 최댓값을 찾으세요.

문제
배열에서 최솟값과 최댓값을 찾아 출력하는 프로그램을 작성하세요.

풀이
Dart의 min과 max 함수를 사용하여 배열의 최솟값과 최댓값을 쉽게 구할 수 있습니다.

import 'dart:math';

void main() {
  List<int> numbers = [5, 1, 9, 2, 10, 3];
  
  int minValue = numbers.reduce(min);
  int maxValue = numbers.reduce(max);

  print('최솟값: $minValue');
  print('최댓값: $maxValue');
}

설명

  • reduce 메서드는 리스트의 모든 값을 순차적으로 비교하여 최솟값과 최댓값을 찾을 때 사용합니다.
  • min과 max는 각각 최소와 최대 값을 반환하는 Dart 내장 함수입니다.

85. 문자열의 단어 수 세기: 문자열에서 단어의 개수를 세어 출력하세요.

문제
주어진 문자열에서 단어의 개수를 세는 프로그램을 작성하세요.

풀이
Dart의 split 메서드를 사용하여 문자열을 공백 기준으로 나눈 후, 리스트의 길이를 구하면 단어의 개수를 알 수 있습니다.

void main() {
  String sentence = "Dart is a powerful language";
  
  List<String> words = sentence.split(' ');
  
  print('단어의 개수: ${words.length}');
}

설명

  • split 메서드는 문자열을 공백을 기준으로 나누어 리스트로 변환합니다.
  • 리스트의 길이를 구하여 단어의 개수를 출력합니다.

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형