본문 바로가기

DSA37

스택(Stack) 활용 예제 3 미로 찾기char maze[MAZE_SIZE][MAZE_SIZE] = { {'W', 'W', 'W', 'W', 'W', 'W'}, {'e', '0', 'W', '0', '0', 'W'}, {'W', '0', '0', '0', 'W', 'W'}, {'W', '0', 'W', '0', 'W', 'W'}, {'W', '0', 'W', '0', '0', 'X'}, {'W', 'W', 'W', 'W', 'W', 'W'}};e에서 시작해서 x를 찾아가는 미로이다. w는 벽이며 0으로만 다닐 수 있다. 현재위치는 .으로 표시된다. 2024.07.22 - [Algorithm] - 스택 (stack) 스택 (stack)스택은 후입선출의 입출력형태를 나타낸다. (Last-in, First-out)ADT 추상 자료형으로 스.. 2024. 8. 21.
스택(Stack) 활용 예제 2 후위 표기 수식 계산#include #include #include #define MAX_STACK_SIZE 100typedef char element;typedef struct { element data[MAX_STACK_SIZE]; int top;}StackType;void init(StackType* s) { s->top = -1;}int is_full(StackType* s) { return (s->top == MAX_STACK_SIZE - 1);}int is_empty(StackType* s) { return (s->top == -1);}void push(StackType* s, element item) { if (is_full(s)) { fprintf(stderr, "스택 포화 에러"); .. 2024. 8. 21.
스택(Stack) 활용 예제 1 괄호 검사 문제조건 1: 왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다.조건 2: 같은 종류의 과라호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다.조건 3: 서로 다른 종류의 왼쪽 괄호와 오른쪽 괄호 쌍은 서로를 교차하면 안된다.조건을 살펴보면 가장 가까운 거리에 있는 괄호들끼리 서로 쌍을 이루어야 된다. 이는 스택을 이용하여 해결해 볼 수 있다.왼쪽 괄호들을 만나면 계속 삽입하다가 오른쪽 괄호들이 나오면 스택에서 가장 최근의 왼쪽괄호를 꺼내어 비교해보면 된다.2024.08.19 - [Algorithm] - 스택(Stack) 2 스택(Stack) 2class element { int top=-1; public static final int MAX_STACK_SIZE=100; int stack.. 2024. 8. 21.
스택(Stack) 2 class element { int top=-1; public static final int MAX_STACK_SIZE=100; int stack[]=new int[MAX_STACK_SIZE]; public boolean is_empty() { return (top==-1); } public boolean is_full() { return (top==(this.MAX_STACK_SIZE-1)); } public void push(int item) { if(is_full()) { System.out.println("스택 포화 에러"); return ; } else stack[++top]=item; } public int pop() { if(is_empty(.. 2024. 8. 19.
순환 (하노이 탑) #include void hanoi_tower(int n, char A, char B, char C){ if (n == 1) printf("원판 1을 %c에서 %c로 옮긴다.\n", A, C); else { hanoi_tower(n - 1, A, C, B); printf("원판 %d을 %c에서 %c로 옮긴다.\n", n, A, C); hanoi_tower(n - 1, B, A, C); }}int main(){ hanoi_tower(4, 'A', 'B', 'C'); return 0;}하노이 탑 가장 위의 원판을 1부터 아래로 갈수록 커지는 것으로 생각하자.출력이 맞는지 검증해 보자.원판 1을 A에서 B로 옮긴다.원판 2을 A에서 C로 옮긴다.원판 1을 B에서 C로 옮긴다.원판 3을 A에서 B로 옮긴.. 2024. 7. 28.
퀵 정렬 예제 백준 2750번 수 정렬하기문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력552341예제 출력12345퀵 정렬을 사용한 정답#define _CRT_SECURE_NO_WARNINGS#include void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp;}int partition(int arr[], int low, int .. 2024. 7. 25.