본문 바로가기

Code18

다이나믹 프로그래밍 컴퓨터의 연산에는 크게 두 가지의 제약사항이 존재한다. 메모리 공간과 연산 속도의 한계이다. 이러한 상황에서 메모리 공간을 약간 더 할애 한다면 비약적으로 연산속도를 증가시킬 수 있는 방법이 있다. 이 대표적인 방법이 다이나믹 프로그래밍 , 동적 게획법이다. 다이나믹 프로그래밍은 2가지 방식 텀 다운과 보텀 업으로 나눌 수 있는데 텀 다운 같은경우에는 맨 위의 큰 문제에서 아래 문제로 쪼개 가며 해결해가는 하향식 해결 방법이고 보텀업의 경우에는 작은 문제들을 먼저 해결해가면서 큰 문제로 합쳐서 해결하는 상향식 해결방법이다. 다이나믹 프로그래밍을 설명하는데에는 피보나치 문제가 주로 이용된다 피보나치 수열에 대해서 설명은 생략하고 재귀적으로 풀어낸 피보나치 소스코드를 살펴보면 아래와 같다. def fibo(.. 2021. 8. 12.
정렬 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말하고 프로그램을 작성할 때 가장 많이 사용하는 알고리즘 중 하나다. 정렬 알고리즘은 매우 다양하고 요구하는 문제에 대해서 효과적인 정렬 알고리즘을 선택해 사용하는 것이 프로그램에 효율적인 동작구동에 큰 도움을 준다. 선택 정렬 가장 작은 데이터를 선택해서 맨 앞에 놔두고 이러한 과정을 연속해서 진행하는 정렬로, 작은 값들을 앞에서부터 차곡차곡 쌓는다고 생각하면 좋다. 이 방법은 가장 원시적인 방법으로 매번 가장 작은 것을 선택한다라는 뜻으로 선택 정렬이라 이름 붙게 되었다. 따라서 마지막 요소를 제외한 모든 데이터를 작은 순서로 접근해야 하고 N-1 번 자리교체가 이루어져야 한다. 선택 정렬은 N -1 번 만큼 자리이동을 하고 , 매번 작은 수를 찾기.. 2021. 8. 5.
탐색 리스트 내에서 데이터를 매우 빠르게 탐색하는 이진 탐색 알고리즘은 종류에 따라 상황에 맞게 사용하면 시간적&공간적 효율을 가져다 줄 수 있다. 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차레대로 확인하는 방법이다. 정렬되어 있지 않은 데이터에 대해서 탐색을 진행할 때 효율적이다 리스트 내 데이터가 아무리 많아도 시간이 충분하다면 항상 원하는 원소를 찾을 수 있다는 장점이 있다. 리스트에 특정 값이 있는지 순차적으로 조사하기 체크하여 찾기 때문에 구현이 간단하다. 리스트 자료형의 Count() 메서드는 내부적으로 순차탐색을 통해서 수행이 된다. 가장 앞에 있는 원소부터 하나씩 확인하므로 시간 복잡도는 O(N)이다. 순차 탐색 소스코드 ( py ) def sequent.. 2021. 8. 4.
Code 100제 (2) 6037> 문장 여러 번 출력하기 ( 반복 횟수, 문장 ) n = int(input()) s = input() for _ in range(n): print(s,end='') 6039> 실수 두 개로 거듭제곱하기 n1, n2 = map(float, input().split()) print((n1) ** (n2)) 6042> 실수 1개 입력받고 소숫점이하 자리 변환 n = float(input()) print(format(n,".2f")) 6044> 정수 2개로 합,차,곱,몫,나머지, 나눈 값 자동 계산 (단 0 2021. 7. 30.
반응형