목록정리 (16)
정글에서 온 개발자
나만의 언어로 암기해보기 버블 정렬: 이웃 교환의 연속 셰이커정렬 : 이웃교환을 위 아래 번갈아서 함 단순선택(선택 정렬) : 자리 정해서 한번에 새치기(원격 교환) 단순삽입(삽입 정렬) : 한명씩 새치기 이진 삽입정렬 셸 정렬: 징검다리 교환 퀵 정렬: 피벗을 기준 (원격)교환하며 분할 정복 병합 정렬: 반씩 쪼개서 분할 정복 힙 정렬: 힙으로 정렬해놓고 하나씩 꺼내며(다시 힙으로 만들면서) 정렬 도수 정렬: 누적도수 분포표를 인덱스로 사용하여 정렬 (비교 및 교환이 없음) 아래부터 각 정렬의 설명 버블(이웃 교환의 연속) - O(n^2) 맨 뒷쪽부터 상호 교환을 앞쪽 까지 함(한 패스) 패스를 n 번 반복함 (패스마다 교환이 n-1번씩 줄어듬) 개선 패스에서 교환이 안 일어나면 끝내기(break) 교..
알고리즘을 실행하는 데 필요한 자원을 예측하는 것을 의미한다. 대부분 그 자원은 시간이다. 알고리즘을 이용할 구현 기술의 모델을 정의하는 것이 좋음. (ex RAM 모델) RAM(random-access machine)모델 명령어는 동시에 수행되지 않고 차례로 하나씩 실행된다. 명령어와 비용도 정확히 하는 것이 좋지만 지루함.(하려고 하지 말자) RAM 모델을 남용하기 보다는 실제 컴퓨터가 어떤 식으로 설계되어 있는지 참고하는 것이 좋음 RAM 의 명령어 - 상수 시간이 걸림 산술연산 ( 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지, 내림, 올림) 데이터 이동 연산 (읽기, 저장하기, 복사하기) 제어 연산 ( 조건 분기, 무조건 분기, 함수 호출, 리턴) 단, 워드 크기가 임의로 커지지 않는다는 조건 하에 ( ..
알고리즘 어떤 값이나 집합을 입력으로 받아 또 다른 값이나 값의 집합을 출력하는 잘 정의된 계산 절차 잘 정의된 계산 문제를 풀기 위한 도구 계산 문제를 정의하려면 입력과 출력의 관계를 잘 서술해야 한다. 어떤문제의 사례는 그 문제의 해를 계산하기 위해 필요한 입력으로 구성되며 문제의 정의에서 요구하는 입력에 대한 제약조건을 만족해야 한다. 알고리즘이 모든 입력 사례에 대해 항상 올바른 출력을 내고 종료할 경우 이를 타당(correct)하다고 한다. 타당한 알고리즘이 계산 문제를 푼다(solve)고 말한다. 타당하지 않은 알고리즘도 오류의 비율을 조절할 수 있으면 유용할 때가 있다. 알고리즘에 대한 지식과 기술을 얼마나 알차게 학습했느냐가 숙련된 프로그래머와 초보자를 구분하는 기준이 될 수 있다. 알고리..

사실 논란의 여지가 없다. ‘=’ 은 연산자(operator)가 아니라 **구분기호(delimeter)**다. 할당 구분자를 사용한 문장은 식(expression)이 아니고 아니라 문(statement)이다. (=할당문) [2. Lexical analysis A Python program is read by a parser. Input to the parser is a stream of tokens, generated by the lexical analyzer. This chapter describes how the lexical analyzer breaks a file into tokens. Python... docs.python.org](https://docs.python.org/3/reference..

관련문제 백준 1978 소수 찾기 백준 9020 골드바흐의 추측 메모이제이션 메모이제이션 : 컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제거하여 프로그램 실행 속도를 빠르게 하는 기술 소수를 한 번만 찾는 경우는 메모이제이션이 필요 없겠지만 한 번 이상 찾으면 기존 결과를 저장해놓고 다시 찾는 것이 더 빠르다. 대신 공간 복잡도가 증가한다. 최대 N+1 ;n은 소수를 검사할 범위의 크기 범위랑 같은 크기의 배열에 인덱스로 표시하기 방법1.default를 False로 두고 찾기 N = 101 p = [False]*N for i in range(2,N): for x in range(2,int(i**(1/2))+1): if(p[x]==..