이번주 만난 주제

특정 알고리즘 문제 풀이로 Dynamic Programming 이해 하기

접근 방법 기초 분석

핵심 알고리즘 분석

  • 현재 계단(cur_index)부터 마지막 Step 까지 최댓값을 계산해주는 함수 calc_score(cur_index)가 있다 치자
  • 현재 계단에서 다음 계단으로 가는 방법은 2가지다
    • 한칸 가기로 진행한 계단부터 마지막 step 까지의 최댓값 : calc_score(cur_index + 1 )
    • 두칸 가기로 진행한 계단부터 마지막 step 까지의 최댓값 : calc_score(cur_index + 2 )
  • 그렇다면 아래 식이 성립한다. 현재 계단의 값을 score[cur_index]라 치면
    • 현재 계단부터 마지막 계단까지의 최댓값 = 현재 계단 값 + 입력값들중 큰것 ( 한칸가기 최댓값, 두칸가기 최댓값)
    1
    
    calc_score(cur_index) = score[cur_index] + max(calc_score(cur_index+1), calc_score(cur_index+2))
    

경계조건

  • 뼈대가 되는 핵심 알고리즘이 완성되었으므로 ..
  • 경계조건을 살펴보자
    • cur_index = 0 일때, 즉 계단을 밟기전일 때

세부 조건

  • 이제, 세부 조건을 입히면 된다
    • 한칸 가기 조건 : 한칸 가기가 두번째라면 다음번은 한칸가기로 갈 수 없다
    • 두칸 가기 조건 : 마지막 계단 보다 더 많이 갈수는 없다

접근 방법의 이론적 배경

번역해 볼 참고링크

Python 프로젝트에 REPL 넣기

관련 링크

Building REPLs for Fun and Profit

기본 라이브러리인 code 모듈로 구현하는 방법 : repl_basic.py

  • InteractiveConsole() 의 locals 파라메터로 설정된 변수만 REPL에서 접근가능하다
  • .interact() 메소드로 처음과 끝 메시지 출력

IPython 타입의 REPL 사용하기 : repl_ipython.py

  • IPython 별도 설치 필요
  • 위의 code 모듈과는 달리 headerfooter를 개발자가 따로 print 해줘야 함
  • argv=[]를 인자를 IPython.start_ipython()에 넘겨 줘야함 !!
    • 이게 없으면 , 우리 프로젝트와 관계없는 일반적인 ipython command를 실행가능하게 됨

IPython과 code 중 가능한 것으로 실행하는 방법 : repl_compat.py

  • companion repository 코드 참조

Command-Line 옵션 추가하기

  • click 파이썬 패키지 별도 설치 필요