[Computer Science]
[컴퓨터네트워크] HTTP 메서드, 세션과 쿠키
HTTP 메서드 HTTP는 웹 브라우저와 웹 서버 간의 상호 작용을 지원하는 프로토콜 데이터를 요청하는 HTTP 요청과 응답하여 데이터를 보내는 HTTP 응답이라는 두 가지 상호 작용을 반복하여 웹 페이지를 표시합니다. 메서드에는 GET, POST가 있는데 각자 쓰임새가 다릅니다. 1. GET: 사용자가 서버에서 데이터를 요청할 때 url의 쿼리 문자열에 데이터를 첨부하여 서버에 전달 2. POST: 사용자가 서버에 데이터를 보낼 때 데이터를 요청 본문(request body)에 포함하여 전송 POST 방식은 서버 상태를 변경 가능하지만, GET 방식은 서버 상태를 변경시키지 않는다. *사용자가 로그인 양식을 서버에 제출할 때 POST *사용자가 웹 사이트를 방문할 때 GET *사용자가 검색 엔진에서 검..
[컴퓨터네트워크] TCP의 3-way handshake
TCP/IP 4계층에서 애플리케이션 계층 다음에 있는 전송 계층에는 대표적으로 TCP와 UDP가 있습니다. TCP는 신뢰성이 있는 계층이라 하는데 TCP는 자신이 보낸 패킷을 상대방이 받았다는 의미의 응답패킷을 다시 받아야 통신이 정상적으로 되었다 판단합니다. 그래서 데이터 전송을 시작하기 전 3-way handshake 기법을 사용하여 신뢰성을 구축합니다. 3-way handshake는 아래와 같은 3단계로 구성됩니다. 1. 야 들려? 2. 응 들려! 너도 들려? 3. 응 들려! 야 들려?는 SYN에 해당하고 응 들려!는 ACK에 해당합니다. 질문과 응답에 해당하죠. SYN는 synchronization로 연결 요청 메세지를 의미하며, ACK는 acknowledgement로 응답 메세지를 의미합니다. ..
[Algorithm] 누적 합(prefix sum) 알고리즘 by python
누적 합(prefix sum) 알고리즘이 있습니다. 배열의 일부 구간에 대해 아주 빠른 속도로 구해줄 수 있는 알고리즘입니다. 일반적으로 배열에서 일부분의 값을 구하기 위해선 O(N)의 시간이 소요되지만, 누적 합 알고리즘을 사용하면 O(1)의 시간 복잡도를 기대해 볼 수 있습니다. 누적 합 알고리즘을 구하는 2가지 방법이 있습니다. 1. 1차원 배열일 때 주어진 배열 arr와 누적합을 구할 0 * (arr의 길이 + 1)로 초기화된 배열 sum_arr가 있어야 합니다. 그리고 주어진 배열을 순차적으로 탐색하면서 sum_arr 배열을 완성시키면 됩니다. 누적합 배열이기 때문에 sum_arr[i]에는 arr[0] + arr[1] + ... + arr[i-1]까지의 수의 합이 들어가 있다고 생각해야 합니다...
[Algorithm] 가장 긴 증가하는 부분 수열(longest increasing subsequence)
가장 긴 증가하는 부분 수열이라는 알고리즘이 있습니다. 어떠한 수열의 부분수열에서 증가하는 부분수열 중 가장 긴 부분수열을 의미합니다. 다이나믹 프로그래밍 문제를 해결할때 주로 사용됩니다. 특정 수열 A가 주어졌을때 가장 긴 증가하는 부분 수열의 길이를 찾는 문제가 있습니다. A = [ 10 20 10 30 20 50 ] 가장 긴 증가하는 부분 수열은 두가지 방법으로 해결할 수 있는데 하나는 시간복잡도 O(N2)로 해결하는 방법이고 다른 하나는 시간복잡도 O(NlogN)으로 해결하는 방법입니다. 1. 시간복잡도 O(N2) 가장 긴 증가하는 부분수열 문제에서 각 dp[i]값은 주어진 수열의 특정 값을 마지막 원소로 가지는 부분 수열의 최대 길이를 의미합니다. 여기서 특정값은 인덱스 i를 의미하고 A[i]의..
[Algorithm] monotone stack 알고리즘
monotone stack이란 단조로운 스택이란 뜻입니다. 단조로운 스택이란 무슨 말이냐면 항상 오름차순 또는 내림차순이 유지되는 스택을 의미합니다. 스택의 원소들을 O(n)시간복잡도를 가지면서 중복을 허용하지 않고 오름차순 또는 내림차순 상태를 유지하게 합니다. stack의 top에 있는 원소들을 새롭게 들어오려는 원소와 비교하여, 경우에 따라 pop을 진행합니다. 1. 중복없는 오름차순 stack의 경우, 들어오려는 원소가 stack의 top보다 작거나 같은경우 오름차순을 만족할떄까지 pop을 반복한 후 원소를 삽입해주어 오름차순을 유지합니다. 2. 중복없는 내림차순 stack의 경우, 들어오려는 원소가 stack의 top보다 크거나 같은경우 내림차순을 만족할때까지 pop을 반복한 후 원소를 삽입해주..
[Algorithm] BackTracking(백트래킹) 알고리즘
백트래킹 알고리즘은 기본적으로는 완전탐색이면서 DFS에서 가능성이 없는 경우를 가지치기하면서 탈출조건을 만들어 DFS의 성능을 높이는 알고리즘 입니다. 백트래킹에 대해 설명한 블로그의 링크를 걸어놓겠습니다. https://velog.io/@mmindoong/알고리즘-백트래킹BackTracking [알고리즘] 백트래킹(BackTracking) 백준 문제를 풀면서 알고리즘도 같이 정리해두면 좋을 것 같아서 정리해보겠다-! 💡 백트래킹 백트리킹이란 "가능한 모든 방법을 탐색한다"의 아이디어를 가진다. 즉, 백트래킹은 현재 상태에 velog.io 백트래킹의 입문문제인 N과 M 시리즈의 1번 문제입니다. https://hgk5722.tistory.com/84 [백준] 15649 파이썬(python) : N과 M ..