알고리즘 수업 - 버블 정렬 1 - 23968번
#include <stdio.h>
int main() {
int n;
int num;
int count = 0;
scanf("%d %d", &n, &num); //입력을 받는다
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n - 1; i++) { //버블정렬을 한다
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
count++; //교환횟수를 증가해준다
if (count == num) { //만약 num번째면 종료
printf("%d %d\n", arr[j], arr[j + 1]);
return 0;
}
}
}
}
printf("-1\n"); 교환횟수 < num 이면 -1 출력
return 0;
}
배열의 크기, 교환횟수, 배열의 원소를 받고 버블정렬을 하고 입력받은 교환횟수 번째의 교환을 한 후에 교환된 그 두수 두개를 출력한다.
알고리즘 수업 - 버블 정렬 2 - 23969번
#include <stdio.h>
int main() {
int n;
int num;
int count = 0;
scanf("%d %d", &n, &num); //입력받는다
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n - 1; i++) { //버블정렬을 한다
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
count++; //교환횟수 증가
if (count == num) { //num번째 교환이면 ㅊ출력
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
}
}
}
printf("-1\n"); //교환횟수 < num 일때 -1 출력
return 0;
}
배열 크기, 교환 횟수, 배열의 원소들을 입력받고, 버블정렬 하고 입력받은 교환횟수 번째의 교환을 한 후 그 정렬된 수들을 출력한다
알고리즘 수업 - 선택 정렬 1 - 23881번
#include <stdio.h>
int main() {
int n, k;
scanf("%d %d", &n, &k); //입력 받는다
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int count = 0;
for (int i = n - 1; i > 0; i--) { //선택 정렬을 한다
int max = i;
for (int j = i - 1; j >= 0; j--) {
if (arr[j] > arr[max]) {
max = j; //
}
}
if (max != i) {
int temp = arr[i];
arr[i] = arr[max];
arr[max] = temp;
count++;
if (count == k) {
printf("%d %d\n", arr[max], arr[i]); k번째 일시 출력
return 0;
}
}
}
printf("-1\n"); 실제 교환횟수 < 입력받은 교환횟수일때 출력
return 0;
}
배열의 크기, 교환횟수, 배열의 원소를 받고 선택정렬을 하고 입력받은 교환횟수 번째의 교환을 한 후에 교환된 그 두수 두개를 출력한다.
알고리즘 수업 - 선택 정렬 2 - 23882번
#include <stdio.h>
int main() {
int n, k;
scanf("%d %d", &n, &k); //입력을 받는다
int arr[n];
for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
int count = 0;
for (int last = n - 1; last >= 1; last--) { //선택 정렬을한다
int max = 0;
for (int i = 1; i <= last; i++) {
if (arr[i] > arr[max]) max = i;
}
if (max != last) {
int temp = arr[last];
arr[last] = arr[max];
arr[max] = temp;
count++;
if (count == k) {
for (int i = 0; i < n; i++) {
printf("%d", arr[i]);
if (i != n - 1) printf(" ");
}
printf("\n"); // 만약 k번째 이면 출력
return 0;
}
}
}
printf("-1\n"); 실제 교환가능 횟수 < k값이면 출력
return 0;
}
배열 크기, 교환 횟수, 배열의 원소들을 입력받고, 선택정렬 하고 입력받은 교환횟수 번째의 교환을 한 후 그 정렬된 수들을 출력한다
알고리즘 수업 - 삽입 정렬 1 - 23882번
#include <stdio.h>
int main() {
int size, k, count = 0;
scanf("%d %d", &size, &k); //입력을 받는다
int arr[size];
for (int i = 0; i < size; i++) scanf("%d", &arr[i]);
for (int i = 1; i < size; i++) { //삽입정렬을 한다
int n = arr[i];
int num = i - 1;
while (num >= 0 && arr[num] > n) { //값 밀기 저장
arr[num + 1] = arr[num];
num--;
count++;
if (count == k) {
printf("%d\n", arr[num + 1]); //k번째 저장이면 출력
return 0;
}
}
if (num + 1 != i) {
arr[num + 1] = n; //빈자리에 저장
count++;
if (count == k) { //k 번째 저장이면 출력
printf("%d\n", n);
return 0;
}
}
}
printf("-1\n"); //실제 교환 가능 횟수 < k이면 출력
return 0;
}
배열의 크기, 교환횟수, 배열의 원소를 받고 삽입정렬을 하고 입력받은 교환횟수 번째의 교환을 한 후에 교환된 그 두수 두개를 출력한다.
알고리즘 수업 - 삽입 정렬 2 - 24052번
#include <stdio.h>
int main() {
int n;
int num;
int count = 0;
scanf("%d %d", &n, &num); //입력을 받는다
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 1; i < n; i++) { //삽입정렬을 한다
int new = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > new) { //밀기 저장
arr[j + 1] = arr[j];
j--;
count++;
if (count == num) {
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]); // num번째 저장이면 출력
}
printf("\n");
return 0;
}
}
if (j + 1 != i) {
arr[j + 1] = new; //빈칸에 넣기 저장
count++;
if (count == num) {
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]); // num번째 저장이면 출력
}
printf("\n");
return 0;
}
}
}
printf("-1\n"); // 교환횟수 < num 이면 -1출력
return 0;
}
배열 크기, 교환 횟수, 배열의 원소들을 입력받고, 삽입정렬 하고 입력받은 교환횟수 번째의 교환을 한 후 그 정렬된 수들을 출력한다
'코딩 알고리즘 > C \ C++' 카테고리의 다른 글
| 알고리즘 - 이분탐색 - c++ (0) | 2025.06.23 |
|---|---|
| 알고리즘 - 그리디 (0) | 2025.06.18 |
| 알고리즘 백준 문제 풀이 - 5차시 (1) | 2025.06.09 |
| 알고리즘 백준 문제 풀이 - 4차시 (0) | 2025.06.02 |