모든답을 만들어 보고 그중 최적해의 점수를 반환하는 완전 탐색 알고리즘을 설계합니다. 전체 답의 점수를 반환하는 것이 아니라, 앞으로 남은 선택들에 해당하는 점수만을 반환하도록 부분 문제 정의를 바꿉니다. 재귀 호출의 입력에 이전의 선택에 관련된 정보가 있다면 꼭 필요한 것만 남기고 줄입니다. 문제에 최적 부분 구조가 성립할 경우에는 이전 선택에 관련된 정보를 완전히 없앨 수도 있습니다. 여기서 우리의 목표는 가능한 한 중복되는 부분 문제를 많이 만드는 것입니다. 입력의 종류가 줄어들면 줄어들 수록 더 많은 부분 문제가 중복되고, 따라서 메모이제이션을 최대한도로 활용할 수 있지요. 입력이 배열이거나 문자열인 경우 가능하다면 적절한 변환을 통해 메모이제이션할 수 있도록 합니다. 메모이제이션을 적용합니다.
Tail Call Recursion제가 이번에 설명할 것은 제가 검색하다가 발견한! Tail Call Recursion 이라는 새로운 재귀?적인 방법의 코딩입니다. 기존의 재귀함수와 비교하면서 설명하도록 하겠습니다.IDE : Visual Studio 2017언어 : C++ 1. 기존의 재귀함수먼저 기존의 재귀함수를 보도록합니다. 여기서는 가장 대표적인 피보나치 수열을 이용한 재귀함수를 살펴보겠습니다. 뭐.. 설명할 것이 많이 없네요. f라는 함수는 피보나치 수열의 n번째 항을 값으로 리턴해주는 함수입니다. 0번째 항은 0으로 정의 하겠습니다. f(4)를 호출하게 되면 피보나치수열의 4번째 값인 '3'이 잘 출력되는 프로그램입니다. 여기서! f(4)가 호출되었을 때, 일어나는 과정을 살펴보면.f(4) 호출..
Linux File System1.IntroDevice(/dev/sda), Partition(/dev/sda1, ..., /dev/sda7)windows에서는 C,D,E.. 드라이브로 나타내지만 linux에서는 sda1,sda2...로 붙인다.최대 4개까지의 파티션을 만들 수 있지만 추가적인 파티션이 필요하다면 추가 파티션(Extended partition)을 만들어서 사용해야한다.Extended partition은 더 많은 파티션을 만들 수 있는 컨테이너의 역할을 합니다.$ sudo fdisk -l 는 디스크의 파티션을 조회하는데에 자주 이용됩니다. 2.Logical Volume Management(LVM) Physical volume(PV)디스크 자체Volume Group(VG)PV의 그룹화 한 것L..
1. IntroductionUser를 추가하거나 제거하는건 필요불가결합니다.(꼭 필요하다는 뜻)리눅스 커널은 사용자번호(uid)로 사용자를 식별합니다.사용자를 추가하기위해서는 사용자의 정보, home directory가 필요합니다. 2. Related File2.1 /etc/passwd, /ect/shadow리눅스 시스템에 있는 사용자의 계정정보를 담고있습니다.누구나 읽을 수 있습니다만 root만이 쓸 수 있습니다.gdhong:x:500:100:Gildong Hong:/home/gdhong:/bin/bashUsername:passwd:uid:gid:comment:home:shell비밀번호는 암호화하여 /etc/shadow 에 보관합니다. root만이 읽을 수 있습니다.UID는 unsinged ..
0. Linux Command Basics* 두글자 커맨드는 중요함 ㅠㅠ($ cd, $ ls, $ ps ...)$ man -k keyword에 관련하여 메뉴얼을 보여줌$ man command에 관련하여 메뉴얼을 보여줌$ pwd 현재 디렉터리를 출력$ who 현재 시스템에 로그인한 유저$ whoami 현재 로그인한 계정을 출력$ which whoami (/usr/bin/whoami) 커맨드의 위치를 출력$ su - 사용자 계정을 전환합니다. exit 입력하면 이전계정으로 돌아감$ cp fromfile을 복사한 tofile을 만듦$ mv fromfile을 tofile로 이동(같은 디렉터리면 rename)$ touch sample.txt 빈 sample.txt를 생성$ rm filename을 삭제, -r 옵션..