『 1~100을 이용한 알고리즘의 이해 2: C언어편 』
저자: 김득수
사용 프로그램: Visual Studio 2019
※ 본 게시글에 작성된 문제는 책 본문과 일치하지 않는 부분이 존재하며, 풀이 또한 정확하지 않습니다.
10-1. 데이터가 6개 (5, 3, 6, 1, 4, 2) 인 경우 오름차순 정렬을 하기 위한 순서도를 완성하시오.
문제풀이
#include <stdio.h>
void main() {
int a[6] = { 5,3,6,1,4,2 };
int i, j, t;
for (i = 0; i < 5; i++) {
for (j = i + 1; j < 6;) { // ※ j++; 부분 누락
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = a[i]; // ※ a[i]가 아니라 t
}
// ※ for 의 } 부분 누락
printf("%d %d %d %d %d %d \n", a[0], a[1], a[2], a[3], a[4], a[5]);
}
// ※ main() 의 } 누락
오답풀이
#include <stdio.h>
void main() {
int a[6] = { 5,3,6,1,4,2 };
int i, j, t;
for (i = 0; i < 5; i++) {
for (j = i + 1; j < 6; j++) {
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("%d %d %d %d %d %d \n", a[0], a[1], a[2], a[3], a[4], a[5]);
}
}
실행결과
1 5 6 3 4 2
1 2 6 5 4 3
1 2 3 6 5 4
1 2 3 4 6 5
1 2 3 4 5 6
10-2. 데이터가 7개 (5, 3, 6, 1, 7, 4, 2)인 경우 내림차순 정렬을 하기 위한 순서도를 완성하시오.
문제풀이
#include <stdio.h>
void main() {
int a[7] = { 5,3,6,1,7,4,2 };
int i, j, t;
for (i = 0; i < 6; i++) {
for (j = i + 1; j < 7; j++) {
if (a[i] < a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
printf("%d %d %d %d %d %d %d \n", a[0], a[1], a[2], a[3], a[4], a[5], a[6]);
}
}
실행결과
7 3 5 1 6 4 2
7 6 3 1 5 4 2
7 6 5 1 3 4 2
7 6 5 4 1 3 2
7 6 5 4 3 1 2
7 6 5 4 3 2 1
10-3. 데이터가 8개 (5, 3, 6, 1, 7, 4, 8, 2) 인 경우 오름차순 정렬을 하기 위한 순서도를 완성하시오.
문제풀이
#include <stdio.h>
void main() {
int a[8] = { 5,3,6,1,7,4,8,2 };
int i, j, t;
for (i = 0; i < 7; i++) {
for (j = 0; j < 7 - i; j++) {
if (a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
for (int n = 0; n < 8; n++) {
printf("%d ", a[n]);
}
printf("\n");
}
실행결과
3 5 1 6 4 7 2 8
3 1 5 4 6 2 7 8
1 3 4 5 2 6 7 8
1 3 4 2 5 6 7 8
1 3 2 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
10-4. 데이터가 9개 (5, 3, 9, 1, 6, 7, 4, 8, 2)인 경우 오름차순 정렬을 하기 위한 순서도를 완성하시오.
문제풀이
#include <stdio.h>
void main() {
int a[9] = { 5,3,9,1,6,7,4,8,2 };
int i, j, key;
for (i = 1; i < 9; i++) {
key = a[i];
for (j = i - 1; j >= 0; j--) {
if (a[j] > key) {
a[j + 1] = a[j];
}
else {
break;
}
}
a[j + 1] = key;
for (int n = 0; n < 9; n++) {
printf("%d ", a[n]);
}
printf("\n");
}
}
실행결과
3 5 9 1 6 7 4 8 2
3 5 9 1 6 7 4 8 2
1 3 5 9 6 7 4 8 2
1 3 5 6 9 7 4 8 2
1 3 5 6 7 9 4 8 2
1 3 4 5 6 7 9 8 2
1 3 4 5 6 7 8 9 2
1 2 3 4 5 6 7 8 9
'Tycoon > 알고리즘의 이해(2): C언어편 (完)' 카테고리의 다른 글
[알고리즘의 이해(2): C언어편] 연습문제 12장 (0) | 2025.01.03 |
---|---|
[알고리즘의 이해(2): C언어편] 연습문제 11장 (0) | 2025.01.03 |
[알고리즘의 이해(2): C언어편] 연습문제 9장 (0) | 2025.01.03 |
[알고리즘의 이해(2): C언어편] 연습문제 8장 (0) | 2025.01.02 |
[알고리즘의 이해(2): C언어편] 연습문제 7장 (0) | 2025.01.02 |