[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (16) (2021.3.18)
풀었던 문제들을 복습 01. 재귀함수 정의할 때 자기 자신을 참조하는 함수 Recursion 오류를 방지하기 위해서 빠져나가는 지점을 만들어야 한다. if문을 사용해서 특정 지점을 정해 return을 시켜준다. 호출될 때마다 메모리에 스택이 쌓인다. 예제: 하노이의 탑 # 디스크의 수 N = int(input()) # 디스크를 옮기는 재귀함수 # N: 디스크, s: 시작 장대, m: 중간 장대, e: 도착 장대 def moveDisk(N, s, m, e): # 옮길 디스크가 없을 때 if N == 0: return else: # N - 1 개의 디스크를 중간 장대로 옮긴다. moveDisk(N - 1, s, e, m) # 옮긴 디스크와 시작 장대, 도착 장대를 출력 print(N, s, e) # 중간 장..
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (14) (2021.3.16)
Baekjoon Online Judge 백준 온라인 저지 사이트의 문제 풀이 2667 문제 링크 # 큐 자료형 사용하기위해 deque import from collections import deque # 지도의 크기 N = int(input()) # 지도 정보 입력 받기 M = [list(input()) for _ in range(N)] # 지도의 정보 정수형으로 변환 for i in range(N): M[i] = list(map(int, M[i])) # 방향 # 상, 하 dx = [-1, 0, 1, 0] # 좌, 우 dy = [0, -1, 0, 1] # 집 수를 카운트할 리스트 선언 cnt_list = [] # 카운트를 저장할 변수 선언 cnt = 0 # 깊이 우선 탐색으로 지도의 단지를 탐색 # M:..
[항해99 1기] [Chapter2-2] 자료구조, 알고리즘 (11) (2021.3.13)
Baekjoon Online Judge 백준 온라인 저지 사이트의 문제 풀이 9184 문제 링크 def w(a, b, c): # 메모에 전달받은 인자값들이 키로 있으면 그 값을 리턴 if (a, b, c) in memo.keys(): # memo 딕셔너리의 (a, b, c) 값 리턴 return memo[(a, b, c)] # 문제에서 제시된 조건을 이용하여 메모이제이션 if a 20: # 메모이제이션 memo[(20, 20, 20)] = w(20, 20, 20) return memo[(20, 20, 20)] elif a < b < c: # 메모이제이션 memo[(a, b, c)] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c) return memo[(a..