본문 바로가기

분류 전체보기657

허프만 코드(Huffman code) 허프만 코드는 데이터를 효율적으로 압축하는데 사용하는 방법으로 탐욕 알고리즘 중 하나입니다. 압축하고자 하는 문자열에서 자주 등장하는 문자는 짧은 비트로 표현하고 거의 등장하지 않는 문자는 긴 비트로 표현합니다. (가변 길이 코드) 즉, 문자의 빈도수를 이용합니다. 예시를 들어 설명하겠습니다. EX) 압축하고자 하는 문자열 : ABBCCCDDDDEEEEEFFFFFF -> 고정 길이 코드 : A ~F. 6개의 문자를 구분하기 위해 3bit 필요. (2^2(4) 가변 길이 코드 : 허프만 코드를 이용해서 나온 값. [표 1] 고정 길이 코드 : 00000100101001001001101101101110010010010010010110110110110.. 2018. 10. 29.
Window React 개발환경 https://nodejs.org 에서 node.js LTS 버전으로 설치. 버전 확인$ node -v$ npm -vcs create-react-app 설치$ npm install -g create-react-appcs create-react-app으로 프로젝트 생성$ create-react-app [project name]cs 프로젝트 생성이 완성되면 위와 같은 화면이 뜬다. 폴더로 이동해서npm start 명령으로 실행$ cd [project name]$ npm startcs localhost:3000으로 접근. Ctrl + C로 종료할 수 있다. 2018. 10. 28.
[leetcode][929] Unique Email Addresses 문제 : https://leetcode.com/problems/unique-email-addresses/ set을 이용한다.이메일을 앞에서 부터 탐색하면서 '@'가 나오기 전까지 문자는 저장하고 '.'은 무시하면서 이메일을 저장한다. 저장하면서 '+'가 나오면 이후부터 '@'가 나오기 전까지는 무시한다.@이후부터 나오는 도메인은 그대로 저장한다.ex) m.y+name@email.com -> my@email.com 모든 emails 배열을 탐색해서 set을 채웠을 때, set에 있는 이메일 개수가 정답이 된다.시간복잡도는 emails 배열의 크기가 N, emails[i]의 크기가 M이라 했을 때, O(N*M*logN). 소스코드 : https://gist.github.com/fpdjsns/3e2400e0e.. 2018. 10. 28.
[leetcode][921] Minimum Add to Make Parentheses Valid 문제 : https://leetcode.com/problems/minimum-add-to-make-parentheses-valid/ 스택을 이용한다.스택에는 열린 괄호가 나올 때 이를 저장한다. 문자열 S를 처음부터 모두 탐색하면서 만약 문자가 열린 괄호라면 스택에 push한다. 문자가 닫힌 괄호이고 스택이 비어있지 않은 경우 스택을 pop해준다.ex) () -> 파란색 여는 괄호가 빨간색 닫는괄호의 짝이 된다. 문자가 닫힌 괄호이고 스택에 아무것도 없는 경우 열린 괄호가 하나 더 필요하다는 의미이므로 정답 + 1을 해준다.ex) ()) -> 짝이 없는 닫힌 괄호문자열 S를 모두 탐색했을 때 스택의 크기(짝이 없는 여는 괄호)를 정답에 더해준다.ex) ())(( 시간복잡도는 O(|S|). 소스코드 : h.. 2018. 10. 28.
[LeetCode][926] Flip String to Monotone Increasing 문제 : https://leetcode.com/problems/flip-string-to-monotone-increasing/description/ 문자열을 앞에서부터 탐색하면서 1과 0의 개수를 센다.00110이 있다면 1로 바꿔야 하는 0은 1보다 뒤에 위치한다. (00110)1은 앞에 나오는것부터 바꿔야 하므로 처음부터 세어준다.지금 세어주는 수가 현재부터 0 혹은 1을 반대 수로 flip 할 때 바꿔야 하는 최소 횟수가 된다. 만약 0을 바꾸는 것 보다 1을 바꾸는게 더 이득이라면 1을 바꾸는횟수로 초기화한다.예를들어, 1010011이 있다면 4번째 인덱스까지 탐색했을 때 0의 개수(3)는 1의 개수(2)보다 크다.따라서 앞에서 나오는 1들을 모두 0으로 바꾸면 된다. -> 0000011반대의 경.. 2018. 10. 27.
Window 10으로 Docker 시작하기 도커 홈페이지의 메뉴얼을 보고 진행하였습니다. 윈도우 용 Docker CE를 다운받기 위해 다운로드 링크로 들어가서 다운을 받고 깔려고 하였으나 위와 같은 창이 뜨면서 설치가 불가능했다.찾아보니 Window 10 Pro 버전에서는 Hyper-V를 지원해주나 Home 버전에서는 이를 지원해주지 않아서 안되는 듯 하다.그래서 포럼을 뒤져보니 Toolbox를 설치하면 된다고 해서 toolbox로 진행하였다. toolbox를 설치하면 위와 같은 프로그램들이 설치되는데 이 중 Docker Quickstart Terminal을 연다. 열어보면 고래가 나를 반겨주고 $ docker --versioncs 위 명령어로 도커 버전을 확인해본다. 도커를 설치했으면 다음에는 nginx를 설치하고 실행해보자. $ docker .. 2018. 10. 27.