스택 4

[알골90제] 57번 - 재귀함수(STACK) - 2진수 출력

- 스택의 가장 위에 있는 함수가 실행되는 함수다. - D(0)이 실행되면 해당 함수는 x==0이므로 종료됨 - 그러고 맨위의 D(0)이 스택에서 빠짐 - 그다음 스택 최상위 순으로 D(1) - line9까지 하고 넘어왔기 때문에 나머지 line10 마저하고, 함수를 다했으면 스택에서 빠진다. - 재귀는 스택이 비는 순간 main 함수로 옴!!! // 57번 - 재귀함수 이진수 출력 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; void recur(int x) { if (x == 0) return; else { recur(x/2); printf("%d", x%2); } } int main() { int n; scanf("%d", &n); r..

[알골90제] 56번 - 재귀함수 분석 : STACK 이용

*문제 자연수 N이 주어지면 재귀함수를 이용해서 아래와 같이 출력하시오. 스택을 이용하는 재귀함수 입력 3 출력 1 2 3 *코드구현 // 56번 - 재귀함수 (기본) #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; //반환하는 건 아니고 출력함수라서 void void recur(int x) { if (x == 0) return; //종료지점 else { recur(x - 1); printf("%d ", x); } } int main() { int n; scanf("%d", &n); recur(n); } * 주의! //recur과 printf의 순서를 바꾸면 //1 2 3 => 3 2 1 됨 /..

[알골90제] 55번 - 기차운행 : STACK 응용

*문제 입력 3 2 1 3 출력 PPOOPO 결과 A도시에 입력된 결과가 오름차순 (ex.1 2 3) 순으로 B도시에 도착하게 함 *생각 - 스택을 써야하 함 - 조건문 어떻게 달아야 하나, 스택에 넣고, 순서대로 빼는 조건문? *문제 풀이 - 주의! 모든 기차는 교차로에 들어갔다가 B도시에 가야한다. 0) B도시에 순서대로 1 2 3 4 배열을 만들어서 놓는다. 1) 3을 스택에 push한다. 2) push를 했으면 이걸 char 배열에도 P를 넣어야함 나중에 P를 출력해야하니깐 3) stack의 제일 위에 있는 ex.3과 j가 가리키는 부분이 같은지 봐야함. 같지 않으면 넘어감 4) 그 다음 1을 읽어서 스택에 push.. char P 5) 1과 j가 가리키는 곳이 1로 모두 같음. =>pop 하고 ..

[알골90제] 53번 - K진수 출력 : 스택 자료구조

* 문제 10진수 N이 입력되면 K진수로 변환하여 출력하는 프로그램을 작성하세요. 스택 자료구조 이용하기 - 입력: 10진수와 몇진수로 할지 (2, 5, 8, 16) 중 택 1 11 2 - 출력: 1011 - 입력: 31 16 - 출력: 1F * 생각 - 스택을 굳이 이용하는 이유는? - 10진수를 다른 진수로 바꾸는 식은? *풀이(스택) 1) 스택이라는 일차원 배열을 만듬 2) top = -1로 초기화 3) push(2); - top은 항상 ++먼저 증가하고 대입하기 때문에 맨 위에 있는 자료를 가리킨다. *K진수 출력 풀이(스택이용) - 입력 11 2 이면 11을 2로 나눈 나머지를 스택에 push한다. - 나눈 몫에서 다시 2로 나눠서 나머지값을 push - 나눈 몫에서 다시 2로 나눠서 나머지 값..