51. 리스트를 역순으로 변환하여 출력하기
문제
Dart에서 주어진 리스트를 역순으로 변환하여 출력하세요.
코드
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
List<int> reversedNumbers = numbers.reversed.toList();
print(reversedNumbers); // [5, 4, 3, 2, 1]
}
설명
reversed 프로퍼티를 사용하면 리스트의 순서를 뒤집을 수 있으며, 이를 리스트 형태로 변환하려면 toList()를 호출합니다.
52. 현재 날짜와 시간 출력하기
문제
현재 날짜와 시간을 출력하세요.
코드
void main() {
DateTime now = DateTime.now();
print("현재 날짜와 시간: $now");
}
설명
DateTime.now() 메서드를 사용하여 현재 날짜와 시간을 가져올 수 있습니다.
53. 문자열 포맷팅을 사용하여 값 삽입하기
문제
Dart에서 문자열 포맷팅을 사용하여 값을 삽입하세요.
코드
void main() {
String name = "Alice";
int age = 30;
String formattedString = "안녕하세요, 저는 $name이고 나이는 $age입니다.";
print(formattedString);
}
설명
Dart에서는 $ 기호를 사용하여 문자열에 변수를 쉽게 삽입할 수 있습니다.
54. 다양한 데이터 타입 출력하기
문제
Dart에서 다양한 데이터 타입을 출력하는 프로그램을 작성하세요.
코드
void main() {
int a = 10;
double b = 3.14;
String c = "Hello, Dart!";
bool d = true;
print("정수: $a");
print("실수: $b");
print("문자열: $c");
print("불리언: $d");
}
설명
Dart는 다양한 기본 데이터 타입을 제공하며, print 함수를 사용하여 이러한 타입을 쉽게 출력할 수 있습니다.
55. 중첩된 리스트에서 특정 값 추출하기
문제
중첩된 리스트에서 특정 값을 추출하세요.
코드
void main() {
List<List<int>> nestedList = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
int value = nestedList[1][2]; // 6
print(value);
}
설명
중첩된 리스트에서 특정 값을 추출하기 위해 인덱스를 사용하여 리스트에 접근합니다.
56. 함수에서 여러 개의 값을 반환하고 출력하기
문제
함수에서 여러 개의 값을 반환하고 출력하세요.
코드
List<int> calculate(int a, int b) {
int sum = a + b;
int product = a * b;
return [sum, product];
}
void main() {
List<int> results = calculate(3, 4);
print("합계: ${results[0]}, 곱셈: ${results[1]}");
}
설명
Dart에서는 리스트를 사용하여 여러 개의 값을 반환할 수 있습니다. 함수는 List를 반환하며, 반환된 값은 인덱스를 통해 접근할 수 있습니다.
57. 스택 자료구조 구현하기
문제
스택 자료구조를 구현하고 테스트하세요.
코드
class Stack<T> {
List<T> _stack = [];
void push(T value) {
_stack.add(value);
}
T pop() {
return _stack.removeLast();
}
T peek() {
return _stack.last;
}
bool isEmpty() {
return _stack.isEmpty;
}
}
void main() {
Stack<int> stack = Stack<int>();
stack.push(10);
stack.push(20);
print(stack.peek()); // 20
print(stack.pop()); // 20
print(stack.pop()); // 10
print(stack.isEmpty()); // true
}
설명
스택은 LIFO(Last In, First Out) 자료구조로, Dart에서 이를 리스트를 사용하여 구현할 수 있습니다. add 메서드를 사용하여 값을 추가하고, removeLast 메서드를 사용하여 마지막 값을 제거합니다.
58. 큐 자료구조 구현하기
문제
큐 자료구조를 구현하고 테스트하세요.
코드
class Queue<T> {
List<T> _queue = [];
void enqueue(T value) {
_queue.add(value);
}
T dequeue() {
return _queue.removeAt(0);
}
T front() {
return _queue.first;
}
bool isEmpty() {
return _queue.isEmpty;
}
}
void main() {
Queue<int> queue = Queue<int>();
queue.enqueue(10);
queue.enqueue(20);
print(queue.front()); // 10
print(queue.dequeue()); // 10
print(queue.dequeue()); // 20
print(queue.isEmpty()); // true
}
설명
큐는 FIFO(First In, First Out) 자료구조로, 리스트의 add와 removeAt(0) 메서드를 사용하여 구현할 수 있습니다.
59. 객체 비교하기
문제
두 객체가 동일한지 비교하는 메서드를 작성하세요.
코드
class Person {
String name;
int age;
Person(this.name, this.age);
@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
return other is Person && other.name == name && other.age == age;
}
@override
int get hashCode => name.hashCode ^ age.hashCode;
}
void main() {
Person p1 = Person("Alice", 30);
Person p2 = Person("Alice", 30);
print(p1 == p2); // true
}
설명
Dart에서는 == 연산자를 오버라이드하여 객체의 동등성을 정의할 수 있습니다. hashCode도 함께 오버라이드하여 객체가 올바르게 해시될 수 있도록 합니다.
60. 디폴트 매개변수 사용하기
문제
함수에 디폴트 매개변수를 정의하고 호출하세요.
코드
void greet(String name, {String greeting = "Hello"}) {
print("$greeting, $name!");
}
void main() {
greet("Alice");
greet("Bob", greeting: "Hi");
}
설명
Dart에서는 중괄호를 사용하여 명명된 인수와 디폴트 매개변수를 정의할 수 있습니다.
호출 시 디폴트 값을 사용할지, 아니면 다른 값을 사용할지를 선택할 수 있습니다.
이 블로그에서는 Dart 언어를 활용하여 다양한 문제를 해결하는 방법을 살펴보았습니다.
각각의 코드 예제와 함께 설명을 통해 이해를 돕고자 하였으며, 이를 통해 Dart의 기본적인 문법과 기능을 익히는 데 도움이 되었길 바랍니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Dart 100제' 카테고리의 다른 글
Dart 100제 66 ~ 70 (예외 처리) (0) | 2024.08.11 |
---|---|
Dart 100제 61 ~ 65 (문자열과 정규 표현식) (0) | 2024.08.09 |
Dart 100제 46 ~ 50 (고급 주제) (0) | 2024.08.07 |
Dart 100제 41 ~ 45 (알고리즘) (0) | 2024.08.07 |
Dart 100제 36 ~ 40 (비동기 프로그래밍) (2) | 2024.07.24 |