본문 바로가기

전체 글

(21)
[백준 15649] N과 M (1) ● 문제 : 백준 15649번 : N과 M (1) 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net ● 알고리즘 - 재귀함수 - 백트래킹 [백트래킹] 백트래킹이란 경로를 탐색하다가 올바르지 않은 경로라면 계속해서 탐색하는 것이 아니라 이전 단계로 돌아가 다시 올바른 경로를 향해 찾아가는 알고리즘이다. 모든 경로를 탐색하는 알고리 kinngife.tistory.com ● 문제 풀이 백트래킹을 통해 조건에 맞는 경로만 탐색한다. 조건은 간단하다. 방문했는지를 검사하는 visit 배열을 하나 만들고, 이미 방문을 했..
카운팅 정렬 (Counting Sort) ● 코드 #include #include #include #include using namespace std; using ll = long long; using ii = pair; vectorarr(10001); int main() { // 입력 int N; cin >> N; for (int i = 0; i > n; // 카운팅 정렬 arr[n]++; } // 출력 for (int i = 0; i < arr.size(); i++) { if (arr[i]) { while (arr[i]--) cout
병합 정렬 (Merge Sort) ● 코드 #include #include #include #include using namespace std; using ll = long long; using ii = pair; vectorarr(1000000); vectortemp(1000000); void mergesort(int start, int end); // 분할 void merge(int start, int mid, int end); // 정복 int main() { // 입력 int N; cin >> N; for (int i = 0; i > arr[i]; // 병합 정렬 mergesort(0, N - 1); // 출력 for (int i = 0; i < N; i++) cout
삽입 정렬 (Insertion Sort) ● 코드 #include #include #include #include using namespace std; using ll = long long; using ii = pair; int main() { // 입력 int N; cin >> N; vectorarr(N); for (int i = 0; i > arr[i]; // 삽입 정렬 for (int i = 1; i < N; i++) { int temp = arr[i]; int idx = i - 1; while (0
버블 정렬 (Bubble Sort) ● 코드 #include #include #include #include using namespace std; using ll = long long; using ii = pair; int main() { // 입력 int N; cin >> N; vectorarr(N); for (int i = 0; i > arr[i]; // 버블 정렬 for (int i = 0; i arr[j]) swap(arr[i], arr[j]); } } // 출력 for (int i = 0; i < N; i++) cout