하노이탑 문제란큰판이 작은판보다 반드시 아래에 배치되어야하는 규칙을 지키면서 탑을 한 지점에서 다른 지점으로 옮기는 문제이다.아이디어하노이탑 문제는 분할정복 기법으로 접근하여 풀 수 있다. 즉, 하나의 큰 문제를 여러개의 작은 문제로 쪼개어서 풀 수 있다.설계# 디스크 옮기기def move(from, to): disk = tower[from].top() tower[from].pop() tower[to].push(disk)# 하노이 탑 옮기기def hanoi(n, from, temp, to): if n == 0: return hanoi(n -1, from, to, temp) move(from, to) hanoi(n -1, temp, from, to) 하노이탑 문제는 세개의 작은 문제로 쪼갤 수 있다.① ..
#8 재귀 호출자기 자신을 호출하도록 정의한 함수를 재귀함수라고 한다. 재귀함수의 호출을 재귀호출이라고 한다.def my_func(): print("my_func") my_func()my_func()동일한 형태의 함수라도 실제로는 함수를 호출할 때마다 새로운 프레임을 만든다.def my_func(): x = [] print("my_func", id(x)) my_func()my_func()재귀호출을 중단하는 종료조건이 필요하다.def my_func(count): if count > 0: my_func(count - 1) print(count)my_func(3)#9 함수객체파이썬에서는 함수도 객체다. 따라서 함수도 변수에 저..
스택스택은 데이터를 쌓는다. 그리고 가장 나중에 들어온 데이터를 먼저 처리한다. 당장 눈에 들어온 일부터 먼저 처리하는 느낌이다. 미로를 탐험하다보면 보고 있는 위치가 어떤 장소이냐에 따라 스택에 넣을 지 말지, 탐색을 할 지를 결정할 수 있다. 위치struct Pos { int row; int col; // 디버깅을 위한 편의 기능 friend ostream &operator 스택으로 미로찾기void StackMaze() { Stack s; Pos start = {1, 1}; // i = 1, j = 1 시작 지점 s.Push(start); while (!s.IsEmpty()) { Pos p = s.Top(); s.Pop(); ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.