전체 글

전체 글

    Cookie

    쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나이다. 이를 이용해서 서버는 원한다면 쿠키를 이용해서 클라이언트의 데이터를 가져올 수 있다. 그러므로 쿠키를 이용한다는 것은 단순히 서버에서 클라이언트로 쿠키를 전송하는 것 뿐만이 아니라, 클라이언트에서 서버로 쿠키를 전송하는 것 도 포함된다. 서버가 클라이언트에 데이터 저장 쿠키는 클라이언트에 저장될 수 있지만, 데이터를 저장한 이후 아무 때나 데이터를 가져올 수는 없다. 데이터를 가져오기 위한 조건이 있으며, 이를 쿠키 옵션 이라고도 표현한다. 1. Domain 쿠키 옵션에서의 도메인에는 서브 도메인 및 세부 경로를 포함하지 않는다. 만약 쿠키 옵션에 도메인 정보가 존재한다면 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키 전송이 가능하..

    HTTPS

    HTTPS는 HyperText Transfer Protocol Secure Socket layer 의 약자이며, HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다. HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 Algorithm을 활용해서 HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법이다. HTTPS를 이용하면 데이터 제공자의 신원을 보장받을 수 있으며, 이렇게 신원을 확인하고 보장받는 것이 중요한 이유는 다음과 같다. 클라이언트는 데이터 제공자의 데이터를 어떻게든 사용하게 되어 있다. 그렇기에 요청 및 응답을 중간에서 가로채는 중간자 공격 에 취약해진다. 데이터는 중간에 다른 도메인을 거쳐서 전달되기 때문에 어떤 도메인에서 제공되었는지 에..

    0-1 Knapsack Problem | Dynamic Programming

    Problem n개의 아이템의 무게와 가치가 주어지고, 이 아이템들을 W 만큼의 용량을 가진 가방에 넣을 수 있는 최대치로 넣고자 한다. 좀 더 프로그래밍적으로 얘기하자면, 두 정수 배열 val[0, .. , n-1]와 wt[0, .. , n-1]는 각각 아이템의 가치와 무게를 나타내고, 주어진 정수 W는 가방의 용량을 나타낸다. 여기에서 부분집합의 총 무게가 W 보다 작거나 같은, val[]의 최대 부분 집합을 구하라. 아이템을 부술 수 없으며, 또한 하나의 온전한 아이템을 취하거나 취하지 않아야만 한다. (0-1 property) Example Recursion OR Exhaustive Search Solution Approach 간단한 해결책은 아이템들의 모든 부분집합의 무게와 가치를 확인하는 것이..

    Ugly Numbers

    Problem Ugly Numbers는 2, 3, 5로만 나누어 떨어지는 수이다. 11개 정도만 나열해보자면 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15가 된다. 참고로 맨 처음의 1은 편의상 들어가 있는 숫자이다. Ugly Numbers 문제에서는 숫자 n이 주어지며, n번째 Ugly Number를 리턴해야 한다. Example Input : n = 7 Output : 8 Input : n = 10 Output : 12 Input : n = 15 Output : 24 Input : n = 150 Output : 5832 Dynamic Programming Solution Ugly Number에서 1을 제외한 모든 수는 2, 3, 5로 나누어지기 때문에 다음과 같이 그룹을 3개로 나눌 ..

    Longest Increasing Subsequence(LIS) | Dynamic Programming

    Problem Longest Increasing Subsequence(LIS) 문제는 주어진 배열의 subsequence들 중에서 오름차순으로 정렬되었으며, 그 중에서도 길이가 가장 긴 subsequence를 찾아내는 문제이다. What is subsequence? 배열 {1, 2, 3}의 subsequence는 {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} 이다. 이 배열의 LIS를 굳이 따지자면, {1, 2, 3}이 된다. Example 위와 같은 배열이 주어졌을 때, LIS는 {10, 22, 33, 50, 60, 80}이 되고, 그 길이는 6이 된다. Input: arr[] = {3, 10, 2, 1, 20} Output: Length of LIS = 3 T..

    Coin Change | Dynamic Programming

    Problem 주어진 N이라는 값이 있다. 우리의 목적은 N cents에 대한 잔돈을 만드는 것이며, 우리는 각각 S={S1, S2, .. , Sm} 만큼의 가치를 가지는 동전들을 무한대로 공급할 수 있다. 잔돈을 만들기 위한 경우의 수는 몇인가? 여기서 동전들의 순서는 따지지 않기로 한다. Example 1) N = 4 and S = {1, 2, 3} 이 경우 4가지 해결책이 있다. {1,1,1,1}, {1,1,2}, {2,2}, {1,3} 2) N = 10 and S = {2, 5, 3, 6} 이 경우 5가지 해결책이 있다. {2,2,2,2,2}, {2,2,3,3}, {2,2,6}, {2,3,5}, {5,5} Recursive Solution function count(S, m, n) { if (n ..

    Sudoku | Backtracking

    Approach 스도쿠의 칸 들 중에서 비어있는 칸들에 값을 하나씩 할당해보면서 해결하는 방식이다. 숫자를 할당하기 전에, 스도쿠의 규칙을 깨뜨리지 않는지 확인하는 로직이 필요하다. 그러기 위해서 같은 행이나 같은 열, 같은 3X3 subgrid에 넣으려는 숫자와 동일한 숫자가 있는지 없는지 판별해야만 한다. 넣으려는 숫자가 스도쿠 규칙을 깨지 않는다는 것이 확인된 이후에, 숫자를 할당하고 재귀적으로 해당 숫자가 해결책에 도달할 수 있는지 없는지 확인해야 한다. 만약 할당된 숫자가 해결책에 도달하지 못한다면, 그 다음 숫자를 현재의 빈 칸에 대해 다시 시도해본다. 이 작업을 1부터 9까지 다 시도해봤음에도 해결책을 찾아내지 못한다면, false 값을 리턴하고 해결책이 없음을 알린다. Algorithm 할..

    AWS 활용을 위해 알아두면 좋은 개념들

    EC2 Instance를 원격 제어하기 위한 SSH 연결 EC2 Instance 생성 시, SSH 연결을 위해서 키 페어를 생성해야 하는 과정이 있다. 여기서 SSH(Secure Shell) Protocol은 PC와 PC가 Public Networt를 통해서 통신할 때, 보안상 안전하게 하기 위한 Protocol이다. EC2 Instance를 만들 때 키 페어를 생성하는 것은, 주고 받는 데이터를 암호화해서 해당 키 페어를 가지지 않은 사람은 통신되는 데이터를 알아볼 수 없게 하기 위한 조치이다. 키 페어를 생성하게 되면 .pem 확장자를 가진 파일을 내려받게 되는데, 이는 AWS에서 빌린 컴퓨터를 원격으로 제어하기 위해 SSH 통신을 하고자 할 때 필요한 Private Key가 기록된 파일이다. 따라서..

    AWS의 핵심 개념들 및 서비스들

    Cloud Computing 기존 서버의 방식에서는 한 공간에 컴퓨터를 설치하여 서버를 운용했다. 그리고 서버 수용 능력이 한계에 도달하면 컴퓨터를 추가로 설치하거나 각 컴퓨터의 성능을 높이기도 했다. 그러나 이와 같은 서버 관리 방법에는 다음과 같은 문제점들이 있다. 주기적인 관리 필요 → 인력 및 비용 투자 증가 공간의 한계 서버 증설 작업이 까다롭다 보니, 일부 거대 기업은 데이터 센터라는 거대한 건물을 세우기 시작했다. 그리고 이때부터 데이터 센터의 유휴 자원을 대여하는 서비스가 등장하기 시작했다. (이러한 환경을 Off-premise라고 부른다.) 즉 서버의 자원과 공간 및 네트워크 환경을 빌려서 사용하는 Cloud Computing이 시작된 것이다. 장점 데이터 센터와도 비슷한 역할을 하지만,..