요즘 내 관심사가 오로지 개발 뿐이라 SNS와 브라우저 등등의 알고리즘은 나에게 개발 관련된 컨텐츠들을 추천해주는데 어느날 이 강의 광고가 떴길래 바로 결제했다. 파이썬을 막 배운 다음, 뭔가를 만들어보고 싶어서 장고를 이용해서 웹페이지를 만들긴 했었는데, 그때 GET과 POST도 모르고 그냥 HTTP에 대한 이해가 하나도 없는 상태에서 만들어서 많이 아쉬웠었다. 이제 학원에서 본격적으로 웹 서버 수업을 들어가기 전에 HTTP프로토콜을 한 번 정리할 필요가 있었는데 마침 알고리즘이 이 강의를 추천해준 것이다! 역시 기술의 발전이란... 기본 지식이라고 되어있어서 아무래도 보조해줄 교재가 필요할 거 같아서 도 사서 수업들으면서 같이 보았다. 결과적으로 강의는 끝났는데, 책은 아직 반밖에 못 읽었다... 꼼..
ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98 이항 계수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 조합론에서, 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수이다 ko.wikipedia.org 매일 매일 알고리즘 문제를 하나씩 풀고 있는데, 오늘 문제에서는 이항계수라는 개념이 나와서 정리해보려고 한다. 본 내용은 위의 링크를 토대로 학습한 내용을 정리한 것이다. 이해하기 우선 이항계수가 어떤건지 ..
Hoist는 사전상으로 "(밧줄이나 장비를 이용하여)들어[끌어]올리다"라는 의미이다. 자바스크립트에서는 모든 선언을 유효 범위의 가장 위로 끌어올리는 것을 호이스팅(Hoisting)이라고 한다. 즉, 자바스크립트에서 실행 콘텍스트가 어떻게 동작하는지에 대한 생각이다. 이는 '선언과 할당의 분리'와 동일한 의미이다. 하지만 Mozilla의 MDN 웹문서(아래의 링크)에서 확인해보면 호이스팅을 변수 및 함수 선언이 물리적으로 작성한 코드의 상단으로 옮겨지는 것은 아니라고 설명하고 있다. 변수 및 함수 선언은 컴파일 단계에서 메모리에 저장되지만, 코드에서 입력한 위치와 정확히 일치한 곳에 있다고 한다. 어떤 코드를 실행하기 전에 컴파일단계에서 변수 및 함수 선언을 메모리에 저장해두어 선언과 할당의 분리가 가능..
유클리드 호제법은 소인수분해를 하지 않고 2개의 자연수의 최대공약수를 구하는 알고리즘으로 큰 수들의 최대공약수를 구할 때 사용할 수 있다. 이해하기 두 수 a, b가 있다고 하자. a와 b는 공약수 j의 배수이므로 아래와 같다. A = 약수 j * a B = 약수 j * b A를 B로 나누면 아래와 같다. A = (B * x) + y y = A - (B * x) y = (j * a) - (j * b * x) y = j * (a - b * x) 즉, A를 B로 나눈 나머지 y는 A와 B의 공약수 j를 약수로 한다. B = j * b y = j * (a - b * x) 위처럼 b와 y의 공약수는 j이다. 즉, b와 y의 최대공약수(i)는 j와 같거나 j보다 크다. (1) B = 최대공약수 i * c y = ..
정렬 알고리즘은 내가 생각하기에 제일 간단한 알고리즘인데... 종류가 많아서 머릿 속에 빡하고 안 들어오는 느낌이어서 정리해본다. 버블정렬(Bouble Sort) 이해하기 4 3 2 5 1 위와 같은 수열이 있다고 하자. 버블 정렬을 이해하는 데 있어 중요한 것은 버블 정렬을 할 때 수열 중 어떤 하나의 수는 정렬을 따로 할 필요가 없다는 것이다. 왜냐하면 다른 수들이 모두 정렬된 상태라면 자연히 그 숫자도 자리를 찾은 것이기 때문이다. 4 3 2 5(여기까지만) 1 처음 4에서 시작해보자. 우리는 4라는 수를 꺼내서 5가 있는 네번째 자리까지만 가면 된다. 왜냐하면 앞수와 뒷수를 비교하는 과정에서 마지막으로 5와 1을 비교하게 될 것이고, 1은 수열의 마지막이라 비교할 뒷수가 없기 때문이다. 4는 3과..
이름만 봐도 이해하기 힘든 LIS(Longest Increasing Subsequence)는 쉽게 말하자면 나열된 수들 중 오름차순으로 정렬된 가장 긴 부분수열이다. 이해하기 3 1 4 5 2 7 위와 같은 수열이 있다고 하자. 이 때 부분수열은 길이가 1인 부분수열도 있을것이고, 2인 부분수열도 있을것이고, 6인 부분수열도 있을것이다. 제일 앞에 있는 수를 선택할 경우를 생각해보자. 3(★) 1 4 5 2 7 3까지의 수열을 보면 3 밖에 존재하지 않으므로 길이는 1이다. (이 길이는 나중에 써먹어야 하므로 저장해야 한다.) 3 1(★) 4 5 2 7 그 다음 1까지의 수열을 보자. 1까지의 수열([3, 1])에서 부분수열의 최장길이를 구하려면 어떻게 해야 할까? 3과 1을 비교해서 3이 1보다 크므로..
ko.wikipedia.org/wiki/로렘_입숨 로렘 입숨 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 로렘 입숨(lorem ipsum; 줄여서 립숨, lipsum)은 출판이나 그래픽 디자인 분야에서 폰트, 타이포그래피, 레이아웃 같은 그래픽 요소나 시각적 연출을 보여줄 때 사용 ko.wikipedia.org 쉽게 말하자면 더미 텍스트이다. 폰트, 타이포그래피, 레이아웃 같은 그래픽 요소나 시각적 연출을 보여줄 때 사용되는 별다른 의미없는 텍스트이다.
ko.wikipedia.org/wiki/의사코드#cite_note-1 의사코드 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 의사코드(슈도코드, pseudocode[1])는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 ko.wikipedia.org 슈도코드(의사코드, pseudocode)란 일반적인 언어로 코드를 흉내내어 알고리즘을 써놓은 코드를 말한다. 정해진 규칙이나 형식이 없어서 쓰는 사람 마음대로 작성하면 된다고 한다. 참고로 슈도코드의 pseudo의 사전상 의미는 '사이비', '꾸며낸'이다.