2021/02 5

[Chapter8] 다이나믹 프로그래밍

참고 출처 : 이것이 코딩테스트다 with 파이썬 다이나믹 프로그래밍 : 동적 계획법 피보나치 수열은 재귀함수로도 구현이 가능하지만, 숫자가 커질수록 연산수가 늘어남.. 그래서 피보나치 수열은 보통 다이나믹 프로그래밍을 사용해서 구현함. 항상 다이나믹 프로그래밍을 사용할 수 있는 것은 아니다. 다음 조건을 만족할 때만 다이나믹 프로그래밍을 사용할 수 있다. 1. 큰 문제를 작은 문제로 나눌 수 있다. 2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 피보나치 수열을 메모이제이션 기법을 사용해서 해결하기 (메모이제이션은 다이나믹 프로그래밍 구현 방법 중 하나이다.) => 메모이제이션 기법은, 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 ..

[이진 탐색] Chapter7 부품 찾기 & 떡볶이 떡 만들기

참고 출처 : 이것이 코딩테스트다 with 파이썬 # 부품 찾기 [이진탐색] : 재귀함수 이용할 것 1. 함수 인자에 리스트, 타겟, 0 (초기 start값), n-1 (end값)을 매개변수로 넘겨준다. 2. def function 함수 - start 값이 end보다 크면, None 값을 반환 - 만약 리스트[mid] 값이 target이랑 값이 같으면 mid를 반환한다. - 만약 ... 크다면 function(리스트, 타켓, start, mid-1) => end 값이 mid-1로 변경 - 만약 ... 작다면 start 값이 mid+1로 변경 책 답지 #떡볶이 떡 만들기 => 이진 탐색 문제이자, 파라메트릭 서치 유형의 문제 파라메트릭 서치는 최적화 문제를 결정 문제로 바꾸어 해결하는 기법이다. 원하는 조..

[파이썬] 여러 개의 버튼을 각자 작동하게 하는 법 (Qt designer로 UI 구현)

동기함수로 작성되어 있는 경우, 위에서부터 차례대로 함수를 수행한다. 예를 들어, 실행하기 버튼을 누르면 실행하기 버튼에 해당되어 있는 함수가 끝나기 전까진 어떠한 버튼도 눌리지 않는다. 그래서 나는 실행하기 버튼을 누른 상태에서 종료하기 버튼을 눌러 상태를 바꿔보려고 한다. 처음엔 비동기함수로 작성하려 했으나 Qt designer로 파이썬 ui를 구현해서,, 좀 어렵게 됐다.. (변명이라면 변명이겠지만,, 아직 방법을 잘 모름..) 1. def __init__ () 함수에 stop_button 변수 (bool 타입)를 선언해준다. 값은 False 2. 실행하기 메서드 (Thread 이용) 위 함수 execute1은 Thread를 정의해둔 함수! 즉 execute 함수가 진또배기라는 거! 위 함수는 그냥..

[#5] 이진 탐색 chapter7

순차 탐색>> 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인 >> 최악의 경우 시간 복잡도 O(N) 이진 탐색 >> 반으로 쪼개면서 탐색하기 >> 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교해서 원하는 데이터 찾기 이진 탐색은 원소의 개수가 절반씩 줄어든다 따라서 시간 복잡도는 O(logN) 이진탐색 구현 방법은 재귀함수 이용, 반복문 이용 처리해야할 데이터의 개수나 값이 1000만 단위 이상이면, 이진 탐색과 같이 O(logN)의 속도를 내는 알고리즘을 떠올려야함 문제에 자주 나오니 외우길 권장 트리 자료구조>> 큰 데이터를 처리하는 소프트웨어는 대부분 데이터를 트리 자료구조로 저장해서 이진 탐색과 같은 탐색 기법을 이용해 빠르게 탐색 가능 이진..

[파이썬] 람다 lambda 함수

람다는 함수를 딱 한 줄만으로 만들게 해준다. lambda 인자 : 표현식 def hap(x,y): return x+y hap(10,20) >> 이 함수를 람다로 표현하면, (lambda x,y:x+y)(10,20) map() map(함수,리스트) >> 리스트로부터 원소를 하나씩 꺼내서 함수를 적용시키고, 그 결과를 새로운 리스트에 담는다. map(lambda x:x**2,range(5)) >> [0,1,4,9,16] range(5)는 [0,1,2,3,4]라는 리스트를 돌려준다. ex) a=[1,2,3,4] b=[1,2,3,4] list(map(lambda x,y:x+y,a,b))