1.
알고리즘의 조건에 대한 설명으로 옳지 않은 것은?
- ①입력: 외부에서 제공되는 자료가 0개 이상이어야 한다.
- ②출력: 적어도 1개 이상의 결과를 만들어야 한다.
- ③명확성: 명령어들은 현재 실행 가능한 연산이어야 한다.
- ④유한성: 한정된 수의 단계 후에는 반드시 종료되어야 한다.
정답 보기
정답 ③ · 해설 보기
시행 2025-09-20 · 책형 가 · 25문항 · 출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)
정답 ③ · 해설 보기
정답 ① · 해설 보기





정답 ③ · 해설 보기
초기상태: [69, 10, 30, 3, 16, 8]step 1: [3, 10, 30, 69, 16, 8]step 2: [3, 8, 30, 69, 16, 10]step 3: [3, 8, 10, 69, 16, 30]step 4: [3, 8, 10, 16, 69, 30]step 5: [3, 8, 10, 16, 30, 69]
정답 ① · 해설 보기
(A * B) - (C / D) - E
정답 ② · 해설 보기

typedef struct node {
char name;
struct node *left;
struct node *right;
} node;
void Course(node *n) {
if(n != null) {
Course(n->left);
Course(n->right);
printf("%c->", n->name);
}
}
정답 ④ · 해설 보기
50, 60, 70, 90, 80, 75, 73, 72, 78
정답 ④ · 해설 보기

_FS(v) {
visited[v] <- YES; // 정점 v에 대한 방문 표시
Q.enqueue(v)
while(!Q.empty()) { // Q가 비어있지 않은 동안
w <- Q.dequeue();
for all u ∈ (w에 인접한 정점) {
if(visited[u] != YES) {
visited[u] <- YES;
Q.enqueue(u);
}
}
}
}정답 ① · 해설 보기
void ABC(int A[], int n) {
int i, j, tmp;
for(i = n - 1; i > 0; i--) {
j = 0;
while(j < i) {
if(A[j] < A[j + 1]) {
tmp = A[j];
A[j] = A[j + 1];
A[j + 1] = tmp;
}
j = j + 1;
}
}
}정답 ① · 해설 보기
75, 15, 10, 12, 5, 30, 1, 2, 25, 27, 34, 60

정답 ④ · 해설 보기
def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n – 1) + fib(n – 2)
정답 ③ · 해설 보기
정답 ④ · 해설 보기
연산 1. 원소 Y 삽입연산 2. 원소 3개 삭제연산 3. 원소 Q 삽입연산 4. 원소 M 삽입연산 5. 원소 A 삽입연산 6. 원소 K 삽입연산 7. 원소 2개 삭제




정답 ② · 해설 보기

정답 ③ · 해설 보기
정답 ② · 해설 보기
// 입력: 가중 방향 그래프 G, 인접 행렬 A, 시작 정점 s
// 출력: s로부터 다른 모든 정점까지의 최단 경로의 길이
Dijkstra(G, A, s) {
U = {s};
for(모든 정점 v ∈ G)
D[v] = A[s][v];
while(U != G) {
D[w]가 최소인 정점 w ∈ (G–U)를 선택
U = U ∪ {w};
for(w에 인접한 모든 정점 v) {
D[v] = (가);
}
}
}정답 ④ · 해설 보기
정답 ④ · 해설 보기
○ DFS의 시작 정점은 A로 하고, 정점의 접근 순서는 알파벳 순서로 한다.○ DFS는 사이클을 형성하지 않으면서 백트래킹을 통해 시작 정점으로 돌아왔을 때, 시작 정점에서 방문하지 않은 접근 가능한 인접 정점이 없으면 종료한다.○ DFS의 종료시점에 그래프에 방문하지 않은 정점들이 존재하면, 방문하지 않은 정점들 중 알파벳 순서가 가장 앞선 정점을 시작 정점으로 하여 DFS를 다시 시작한다.○ 그래프 안에 방문하지 않은 정점이 존재하지 않을 때까지 DFS를 반복한다.

정답 ④ · 해설 보기
float AVG(float (가), int n) { if(n == 1) return (나); else return (data[n - 1] + (n - 1) * AVG(data, n - 1)) / (다); }
정답 ③ · 해설 보기
ActSelect(n, t[]) {
(가)의 오름차순으로 작업 t[]를 정렬;
count = 0, last = 0, jobs[];
jobs[count] = 0;
for(i = 0; i < n; i++)
if((나)) {
count++;
last = i;
jobs[count] = last;
}
return jobs;
}정답 ③ · 해설 보기
정답 ① · 해설 보기
public class Fibonacci {
static int[] dp = new int[100];
public static void main(String[] args) {
System.out.println(fibo(6));
}
public static int fibo(int num) {
if(num == 0) {
return 0;
}
if(num == 1) {
return 1;
}
if(dp[num] != 0) {
return dp[num];
}
return dp[num] = fibo(num - 1) + fibo(num - 2);
}
}정답 ② · 해설 보기
정답 ④ · 해설 보기
정답 ③ · 해설 보기
○ 주어진 문제에 대해 근사해나 일정 확률 이상의 최적해를 출력함○ 근사해나 간혹 틀린 해를 허용할 수 있는 경우에 사용 가능함○ 효율적인 결정론적 알고리즘이 밝혀져 있지 않은 문제에 효과적임
정답 ③ · 해설 보기