1. 배열과 리스트 (Arrays and Lists)
1. 리스트의 평균 구하기: 주어진 리스트의 평균을 계산하여 출력하세요.
List<int> numbers = [1, 2, 3, 4, 5];
2. 리스트의 모든 요소 더하기: 주어진 리스트의 모든 요소를 더하여 출력하세요.
List<int> numbers = [10, 20, 30];
3. 리스트에서 특정 값 찾기: 주어진 리스트에서 특정 값이 존재하는지 확인하여 출력하세요.
List<int> numbers = [5, 10, 15, 20];
int value = 15;
4. 리스트에서 최대값 찾기: 주어진 리스트에서 최대값을 찾아 출력하세요.
List<int> numbers = [7, 22, 5, 18];
5. 리스트 정렬하기: 주어진 리스트를 오름차순으로 정렬하여 출력하세요.
List<int> numbers = [34, 7, 23, 32];
6. 리스트에서 중복 값 제거하기: 주어진 리스트에서 중복된 값을 제거하여 출력하세요.
List<int> numbers = [1, 2, 2, 3, 4, 4];
7. 리스트의 짝수만 추출하기: 주어진 리스트에서 짝수만 추출하여 새로운 리스트를 만드세요.
List<int> numbers = [1, 2, 3, 4, 5, 6];
8. 리스트의 모든 요소를 제곱하기: 주어진 리스트의 모든 요소를 제곱하여 새로운 리스트를 만드세요.
List<int> numbers = [1, 2, 3];
9. 리스트의 합 구하기: 주어진 리스트의 요소 합을 구하여 출력하세요.
List<int> numbers = [5, 10, 15];
10. 리스트의 최대값과 최소값 구하기: 주어진 리스트에서 최대값과 최소값을 찾아 출력하세요.
List<int> numbers = [10, 5, 8, 20];
2. 문자열 (Strings)
11. 문자열 길이 구하기: 주어진 문자열의 길이를 출력하세요.
String text = "Hello, Dart!";
12 .문자열 대문자로 변환하기: 주어진 문자열을 모두 대문자로 변환하여 출력하세요.
String text = "hello";
13. 문자열에서 특정 문자 찾기: 주어진 문자열에서 특정 문자의 인덱스를 찾아 출력하세요.
String text = "Hello, Dart!";
String charToFind = "D";
14. 문자열 연결하기: 두 개의 문자열을 연결하여 출력하세요.
String str1 = "Hello";
String str2 = "World";
15. 문자열에서 부분 문자열 추출하기: 주어진 문자열에서 특정 부분 문자열을 추출하여 출력하세요.
String text = "Hello, Dart!";
int start = 7;
int end = 11;
16. 문자열에서 공백 제거하기: 주어진 문자열의 양쪽 공백을 제거하여 출력하세요.
String text = " Hello, Dart! ";
17. 문자열을 배열로 변환하기: 주어진 문자열을 문자 배열로 변환하여 출력하세요.
String text = "Hello";
18.문자열의 문자 수 세기: 주어진 문자열에서 특정 문자의 개수를 세어 출력하세요.
String text = "hello world";
String charToCount = "o";
19. 문자열의 특정 문자 제거하기: 주어진 문자열에서 특정 문자를 제거하여 출력하세요.
String text = "hello world";
String charToRemove = "o";
20. 문자열에서 단어 수 세기: 주어진 문자열에서 단어의 개수를 세어 출력하세요.
String text = "Hello world Dart programming";
3. 수학 및 계산 (Mathematics and Calculations)
21. 숫자의 제곱 구하기: 주어진 숫자의 제곱을 계산하여 출력하세요.
int number = 5;
22. 주어진 숫자의 팩토리얼 계산하기: 주어진 숫자의 팩토리얼을 계산하여 출력하세요.
int number = 5;
23. 주어진 숫자의 제곱근 구하기: 주어진 숫자의 제곱근을 계산하여 출력하세요.
int number = 16;
24. 주어진 두 숫자의 최대 공약수(GCD) 구하기: 두 개의 숫자에서 최대 공약수를 구하여 출력하세요.
int a = 48;
int b = 18;
25. 주어진 두 숫자의 최소 공배수(LCM) 구하기: 두 개의 숫자에서 최소 공배수를 구하여 출력하세요.
int a = 12;
int b = 15;
26. 피보나치 수열 계산하기: 주어진 숫자까지의 피보나치 수열을 출력하세요.
int n = 10;
27. 소수 판별하기: 주어진 숫자가 소수인지 판별하여 출력하세요.
int number = 29;
28. 숫자 배열의 중간값 구하기: 주어진 숫자 배열의 중간값을 계산하여 출력하세요.
List<int> numbers = [3, 5, 7, 9];
29. 주어진 숫자 범위의 합 구하기: 두 숫자 사이의 합을 계산하여 출력하세요.
int start = 1;
int end = 10;
30. 소수의 목록 구하기: 1부터 주어진 숫자까지의 소수를 목록으로 출력하세요.
int limit = 50;
4. 정렬 및 탐색 (Sorting and Searching)
31. 버블 정렬 구현하기: 주어진 배열을 버블 정렬로 정렬하여 출력하세요.
List<int> numbers = [64, 25, 12, 22, 11];
32. 삽입 정렬 구현하기: 주어진 배열을 삽입 정렬로 정렬하여 출력하세요.
List<int> numbers = [12, 11, 13, 5, 6];
33. 선택 정렬 구현하기: 주어진 배열을 선택 정렬로 정렬하여 출력하세요.
List<int> numbers = [29, 10, 14, 37, 13];
34. 이진 탐색 구현하기: 정렬된 배열에서 특정 값을 이진 탐색으로 찾아서 인덱스를 출력하세요.
List<int> numbers = [1, 3, 5, 7, 9, 11];
int target = 7;
35. 순차 탐색 구현하기: 주어진 배열에서 특정 값을 순차 탐색으로 찾아서 인덱스를 출력하세요.
List<int> numbers = [10, 20, 30, 40, 50];
int target = 30;
36. 정렬된 배열에서 두 수의 합이 특정 값이 되는지 확인하기: 정렬된 배열에서 두 수의 합이 특정 값이 되는지 확인하여 출력하세요.
List<int> numbers = [1, 2, 3, 4, 5, 6];
int targetSum = 10;
37. 배열에서 두 수의 차가 특정 값이 되는지 확인하기: 배열에서 두 수의 차가 특정 값이 되는지 확인하여 출력하세요.
List<int> numbers = [10, 15, 20, 25];
int targetDifference = 5;
38. 정렬된 배열에서 중복된 요소 찾기: 정렬된 배열에서 중복된 요소를 찾아 출력하세요.
List<int> numbers = [1, 2, 2, 3, 4, 4, 5];
39. 주어진 배열에서 k번째 최소값 찾기: 주어진 배열에서 k번째 최소값을 찾아 출력하세요.
List<int> numbers = [10, 4, 7, 1, 5];
int k = 2;
40. 배열에서 k번째 최대값 찾기: 주어진 배열에서 k번째 최대값을 찾아 출력하세요.
List<int> numbers = [10, 20, 4, 45, 99];
int k = 3;
5. 재귀 및 백트래킹 (Recursion and Backtracking)
41. 팩토리얼 계산하기 (재귀적): 주어진 숫자의 팩토리얼을 재귀적으로 계산하여 출력하세요.
int number = 5;
42. 피보나치 수열 계산하기 (재귀적): 주어진 숫자까지의 피보나치 수열을 재귀적으로 계산하여 출력하세요.
int n = 7;
43. 하노이 탑 문제 해결하기: 주어진 원판 개수로 하노이 탑 문제를 해결하여 이동 경로를 출력하세요.
int n = 3;
44. 백트래킹을 이용한 부분 집합 찾기: 주어진 배열의 모든 부분 집합을 백트래킹을 이용하여 출력하세요.
List<int> numbers = [1, 2, 3];
45. 배열에서의 모든 조합 찾기: 주어진 배열의 모든 조합을 찾고 출력하세요.
List<int> numbers = [1, 2, 3];
46. 재귀를 이용한 배열 요소의 합 구하기: 배열의 모든 요소의 합을 재귀적으로 계산하여 출력하세요.
List<int> numbers = [5, 10, 15];
47. 문자열의 모든 조합 찾기: 주어진 문자열의 모든 조합을 찾아 출력하세요.
String text = "abc";
48. 재귀를 이용한 이진 트리 순회: 이진 트리를 재귀적으로 순회하여 노드 값을 출력하세요.
class TreeNode {
int value;
TreeNode left, right;
TreeNode(this.value, [this.left, this.right]);
}
49. 백트래킹을 이용한 N-Queens 문제 해결하기: N-Queens 문제를 백트래킹을 이용하여 해결하고 체스판에 배치하는 방법을 출력하세요.
int n = 8;
50. 재귀를 이용한 문자열 반전하기: 주어진 문자열을 재귀적으로 반전하여 출력하세요.
String text = "hello";
6. 동적 프로그래밍 (Dynamic Programming)
51. 피보나치 수열 (동적 프로그래밍): 주어진 숫자까지의 피보나치 수열을 동적 프로그래밍으로 계산하여 출력하세요.
int n = 10;
52. 최대 공통 부분 문자열 (동적 프로그래밍): 두 문자열의 최대 공통 부분 문자열을 동적 프로그래밍으로 찾아 출력하세요.
String s1 = "abcde";
String s2 = "abfce";
53. 0/1 배낭 문제 (동적 프로그래밍): 주어진 아이템과 무게, 가치로 0/1 배낭 문제를 해결하여 최대 가치를 출력하세요.
List<int> weights = [1, 2, 3];
List<int> values = [10, 20, 30];
int capacity = 5;
54. 최소 편집 거리 (동적 프로그래밍): 두 문자열의 최소 편집 거리를 동적 프로그래밍으로 계산하여 출력하세요.
String s1 = "kitten";
String s2 = "sitting";
55. 가장 긴 증가하는 부분 수열 (LIS): 주어진 배열의 가장 긴 증가하는 부분 수열의 길이를 동적 프로그래밍으로 구하여 출력하세요.
List<int> numbers = [10, 22, 9, 33, 21, 50, 41, 60];
56. 최장 공통 부분 수열 (LCS): 두 문자열의 최장 공통 부분 수열의 길이를 동적 프로그래밍으로 구하여 출력하세요.
String s1 = "ABCBDAB";
String s2 = "BDCAB";
57. 최소 동전 문제 (동적 프로그래밍): 주어진 동전들의 종류로 특정 금액을 만들기 위한 최소 동전 수를 동적 프로그래밍으로 구하여 출력하세요.
List<int> coins = [1, 3, 4];
int amount = 6;
58. 구간 합 문제 (동적 프로그래밍): 주어진 배열의 구간 합을 동적 프로그래밍으로 계산하여 출력하세요.
List<int> numbers = [1, 2, 3, 4, 5];
int start = 1;
int end = 3;
59. 최대 부분 배열 합 문제 (Kadane's Algorithm): 주어진 배열에서 최대 부분 배열의 합을 Kadane's Algorithm을 사용하여 구하여 출력하세요.
List<int> numbers = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
60. 최소 부분 배열 합 문제: 주어진 배열에서 최소 부분 배열의 합을 구하여 출력하세요.
List<int> numbers = [1, -2, 3, -4, 5];
7. 그래프 (Graphs)
61. 그래프의 인접 리스트 구현하기: 주어진 정점과 엣스를 이용하여 그래프의 인접 리스트를 구현하고 출력하세요.
Map<int, List<int>> graph = {};
62. 그래프의 깊이 우선 탐색 (DFS): 그래프의 깊이 우선 탐색(DFS)을 구현하여 노드를 순회하세요.
Map<int, List<int>> graph = {1: [2, 3], 2: [4], 3: [4], 4: []};
int startNode = 1;
63. 그래프의 너비 우선 탐색 (BFS): 그래프의 너비 우선 탐색(BFS)을 구현하여 노드를 순회하세요.
Map<int, List<int>> graph = {1: [2, 3], 2: [4], 3: [4], 4: []};
int startNode = 1;
64. 최단 경로 찾기 (다익스트라 알고리즘): 그래프에서 두 정점 사이의 최단 경로를 다익스트라 알고리즘으로 구하여 출력하세요.
Map<int, Map<int, int>> graph = {};
int start = 1;
int end = 4;
65. 최단 경로 찾기 (벨만-포드 알고리즘): 그래프에서 두 정점 사이의 최단 경로를 벨만-포드 알고리즘으로 구하여 출력하세요.
Map<int, Map<int, int>> graph = {};
int start = 1;
int end = 4;
66. 최소 신장 트리 (크루스칼 알고리즘): 그래프에서 최소 신장 트리를 크루스칼 알고리즘으로 구하여 출력하세요.
List<List<int>> edges = [];
67. 최소 신장 트리 (프림 알고리즘): 그래프에서 최소 신장 트리를 프림 알고리즘으로 구하여 출력하세요.
Map<int, List<List<int>>> graph = {};
68. 강한 연결 요소 찾기 (타르잔의 알고리즘): 그래프에서 강한 연결 요소를 타르잔의 알고리즘으로 찾아 출력하세요.
Map<int, List<int>> graph = {};
69. 위상 정렬: 그래프의 위상 정렬을 구현하여 출력하세요.
Map<int, List<int>> graph = {};
70. 이분 그래프 판별하기: 주어진 그래프가 이분 그래프인지 판별하여 출력하세요.
Map<int, List<int>> graph = {};
8. 정렬 및 탐색 (Sorting and Searching)
71. 퀵 정렬 구현하기: 주어진 배열을 퀵 정렬로 정렬하여 출력하세요.
List<int> numbers = [10, 7, 8, 9, 1, 5];
72. 합병 정렬 구현하기: 주어진 배열을 합병 정렬로 정렬하여 출력하세요.
List<int> numbers = [12, 11, 13, 5, 6, 7];
73. 힙 정렬 구현하기: 주어진 배열을 힙 정렬로 정렬하여 출력하세요.
List<int> numbers = [4, 10, 3, 5, 1];
74. 선택 정렬 구현하기: 주어진 배열을 선택 정렬로 정렬하여 출력하세요.
List<int> numbers = [64, 25, 12, 22, 11];
75. 삽입 정렬 구현하기: 주어진 배열을 삽입 정렬로 정렬하여 출력하세요.
List<int> numbers = [12, 11, 13, 5, 6];
76. 이진 탐색 구현하기: 정렬된 배열에서 이진 탐색을 이용하여 특정 값을 찾고 인덱스를 출력하세요.
List<int> numbers = [2, 3, 4, 10, 40];
int target = 10;
77. 선형 탐색 구현하기: 주어진 배열에서 선형 탐색을 이용하여 특정 값을 찾고 인덱스를 출력하세요.
List<int> numbers = [10, 20, 30, 40, 50];
int target = 30;
78. 배열의 모든 쌍 찾기: 주어진 배열에서 두 수의 합이 특정 값이 되는 모든 쌍을 찾아 출력하세요.
List<int> numbers = [1, 4, 5, 7, 9];
int target = 8;
79. 문자열의 모든 회문 찾기: 주어진 문자열에서 모든 회문을 찾아 출력하세요.
String text = "racecar madam level";
80. 문자열의 모든 회문 부분 문자열 찾기: 주어진 문자열에서 모든 회문 부분 문자열을 찾아 출력하세요.
String text = "abccba";
9. 동적 프로그래밍 및 기타 문제 (Dynamic Programming and Miscellaneous)
81. 가장 긴 증가하는 부분 수열 (LIS) 길이 구하기: 주어진 배열에서 가장 긴 증가하는 부분 수열의 길이를 구하여 출력하세요.
List<int> numbers = [10, 22, 9, 33, 21, 50, 41, 60];
82. 행렬의 최단 경로 문제 해결하기: 주어진 행렬에서 시작점에서 끝점까지의 최단 경로를 찾고 경로의 길이를 출력하세요.
List<List<int>> matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
83. 행렬의 최대 경로 문제 해결하기: 주어진 행렬에서 시작점에서 끝점까지의 최대 경로를 찾고 경로의 길이를 출력하세요.
List<List<int>> matrix = [
[10, 10, 2, 0],
[1, 20, 4, 1],
[0, 30, 3, 6]
];
84. 정수 배열의 부분 집합 합 문제 해결하기: 주어진 배열에서 특정 합을 만드는 모든 부분 집합을 찾아 출력하세요.
List<int> numbers = [1, 2, 3, 4, 5];
int targetSum = 8;
85. 최소 스패닝 트리 문제 해결하기: 그래프에서 최소 스패닝 트리를 찾고 그 가중치의 합을 출력하세요.
List<List<int>> edges = [
[0, 1, 10],
[0, 2, 6],
[0, 3, 5],
[1, 3, 15],
[2, 3, 4]
];
86. 최대 부분 배열 합 문제 (Kadane's Algorithm): 배열에서 최대 부분 배열의 합을 Kadane's Algorithm으로 구하여 출력하세요.
List<int> numbers = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
87. 배열의 부분 집합을 생성하여 출력하기: 주어진 배열의 모든 부분 집합을 생성하여 출력하세요.
List<int> numbers = [1, 2, 3];
88. 모든 가능한 조합 구하기: 주어진 배열의 모든 가능한 조합을 생성하여 출력하세요.
List<int> numbers = [1, 2, 3];
89. 문자열의 모든 순열 구하기: 주어진 문자열의 모든 순열을 생성하여 출력하세요.
String text = "abc";
90. 배열의 순열을 생성하여 출력하기: 주어진 배열의 모든 순열을 생성하여 출력하세요.
List<int> numbers = [1, 2, 3];
91. 부분 문자열의 최대 길이 구하기: 주어진 문자열에서 최대 길이의 부분 문자열을 구하여 출력하세요.
String text = "abcabcbb";
92. 정수 배열의 모든 쌍의 곱 구하기: 주어진 배열의 모든 쌍의 곱을 계산하여 출력하세요.
List<int> numbers = [1, 2, 3, 4];
93. 이진 트리의 깊이 구하기: 주어진 이진 트리의 깊이를 구하여 출력하세요.
class TreeNode {
int value;
TreeNode left, right;
TreeNode(this.value, [this.left, this.right]);
}
94. 이진 트리의 모든 경로 찾기: 주어진 이진 트리에서 모든 경로를 찾아 출력하세요.
class TreeNode {
int value;
TreeNode left, right;
TreeNode(this.value, [this.left, this.right]);
}
95. 이진 검색 트리의 유효성 검사하기: 주어진 이진 검색 트리가 유효한지 검사하여 출력하세요.
class TreeNode {
int value;
TreeNode left, right;
TreeNode(this.value, [this.left, this.right]);
}
96. 문자열을 압축하여 출력하기: 주어진 문자열을 압축하여 출력하세요.
String text = "aabcccccaaa";
97. 문자열에서 모든 고유 문자 찾기: 주어진 문자열에서 모든 고유 문자를 찾아 출력하세요.
String text = "hello";
98. 주어진 정수의 모든 약수 찾기: 주어진 정수의 모든 약수를 찾아 출력하세요.
int number = 28;
99. 정수 배열의 각 원소에 대해 제곱을 구하여 출력하기: 주어진 배열의 각 원소에 대해 제곱을 구하여 출력하세요.
List<int> numbers = [1, 2, 3, 4];
100. 문자열을 반복하여 일정 길이의 문자열 만들기: 주어진 문자열을 반복하여 특정 길이의 문자열을 만들고 출력하세요.
String text = "abc";
int length = 10;
'Dart > Algorithms' 카테고리의 다른 글
Dart 코딩 테스트 100제 (2) | 2024.09.24 |
---|