### 덱(deque) ### :양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조 (stack + queue) from collections import deque #deque 만들기(stack,queue를 합쳐 놓은 것) de = deque() #왼쪽에 값 추가 de.appendleft() #오른쪽에 값 추가 de.append() #왼쪽에 값 확장 de.extendleft() #오른쪽에 값 확장 de.extend() #값 삭제 de.remove() #맨 왼쪽값 출력 후 제거 de.popleft() #맨 오른쪽값 출력 후 제거 de.pop() #값 회전(오른쪽) de.rotate(1) #값 회전(왼쪽) de.rotate(-1)
### 하노이의 탑 ### : 3개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판이 있다. : n개의 원판 일 경우 원판을 모두 마지막 기둥으로 옮길 수 있는 방법의 수는 (2^n) - 1번 이다 (메르센 수) 1. 한 번에 하나의 원판만 옮길 수 있다. 2. 큰 원판이 작은 원판 위에 있으면 안된다. # 첫 번째 규칙 1->2, 1->3, 2->3을 잘 생각해서 재귀 하면 된다. # 재귀할 때 해당 code 다 끝나면 돌아온다. def hanoi(n, from_, to_, by_): if n == 1: print(from_, by_) else: hanoi(n-1, from_, by_, to_) print(from_, by_) hanoi(n-1, to_, from_, by_)
ps 구현 문제를 풀다가 slice를 사용해하는 문제를 풀게 되었다 . 그러나 계속 slice 할때 나머지를 출력해야 하는데 list index out of range가 뜰거 같아서 뱅뱅 머물렀다 . 그런데 실수로 찾았다.... s[a:b]에서 b > len(s)+1를 넘어가도 a 부터 끝까지 출력이 된다. 즉, s[:len(s)+A] => s 전체 출력 (A > 1) https://dojang.io/mod/page/view.php?id=2208