일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- js
- Django
- 파이썬 알고리즘
- web
- c++
- 백준
- MAC
- Baekjoon
- javascript
- form
- API
- java
- 장고
- 알고리즘 문제
- Git
- 알고리즘 연습
- 알고리즘 풀이
- DRF
- 파이썬
- 알고리즘
- Algorithm
- HTML
- django rest framework
- PYTHON
- react
- django ORM
- AWS
- CSS
- django widget
- es6
- Today
- Total
목록2020/10 (7)
수학과의 좌충우돌 프로그래밍
이번 포스팅에서는 Two Pointers에 대해서 알아보도록 하겠습니다. Two Pointers 는 1차원 배열에서 두 개의 포인터를 조작하여 원하는 결과를 얻는 알고리즘입니다. 여기서 두 개의 포인터를 사용하여 기존의 방식보다 시간을 개선할 수 있습니다. Two Pointers 의 동작원리, 시간복잡도, C++로 구현한 코드를 보며 이해해보겠습니다. 동작 원리 적절한 예시를 위해 백준에서 Two Pointers 를 사용하는 문제의 에시를 사용하겠습니다. https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분..
이번 포스팅에서는 Counting Sort 에 대해서 알아보도록 하겠습니다. Counting Sort의 동작원리, 시간복잡도, C++로 구현한 코드를 보며 이해해보겠습니다. 동작원리 다음과 같이 origin이라는 배열을 Counting Sort를 통해서 정렬 해보도록 하겠습니다. int origin[] = {5, 3, 4, 5, 1, 0, 4, 1, 3, 0, 2, 4, 2, 3, 0}; Counting 첫 번째로 해야할 일은 각 숫자가 몇 번 나왔는지 세야합니다. origin 배열에 등장한 수와 그 수가 몇 번 나왔는지를 기재하였습니다. 수 0 1 2 3 4 5 나온 횟수 3 2 2 3 3 2 Counting Sum 다음으로는 각 수의 누적합을 구해줍니다. 누적합을 통해서 해당 숫자가 어느 인덱스에 위..
블로그를 포스팅하면서 URI와 URL이라는 단어를 사용할 일이 많았습니다. 하지만 그 때마다 적절하게 잘 선택을 하였는지, 그리고 정확하게 각각의 차이가 무엇인지 혼동되어 이를 정리해보고자 합니다. URI vs URL vs URN 각각에 대해서 알아봅시다. URI URI는 Uniform Resource Identifier의 약자로 해석하자면, 통합 자원 식별자라고 합니다. 인터넷의 우편물 주소 같은 것으로, 자원을 고유하게 식별하고 위치를 지정할 수 있습니다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닙니다. 다음과 같이 제 블로그의 URI도 앞에 http 프로토콜이 존재하죠. https://ssungkang.tistory.com/images/MSA.jepg 해당 ..
클라이언트와 서버는 서로 요청과 응답을 주고 받습니다. 이 때 클라이언트는 요청 메서드, request method를 통해 요청의 목적이나 종류를 알리게 됩니다. 이번 포스팅에서는 각각의 HTTP 요청 메서드들을 비교하고 정리해보도록 하겠습니다. HTTP 요청 메서드 각 HTTP 요청 메서드와 특징들을 표로 정리하였습니다. detail request body successful response body safe idempotent cachable allow in HTML forms GET 리소스 요청 NO YES YES YES YES YES HEAD GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함 X NO NO YES YES YES NO POST 내용 전송 YES YES NO NO N..
클라이언트와 서버가 요청과 응답을 주고 받을 때 서버는 응답의 결과가 어떨지 알려줘야 합니다. 결과의 내용을 response body에 상세하게 적어줄 수도 있지만 다양하게 발생하는 에러에 이를 다 적는 것은 적지 않은 시간이 소요될 뿐 아니라 다양한 서버 개발자가 함께 작업하다보면 메세지의 포멧이 다양해져 클라이언트와의 소통에 문제가 생길 수 있습니다. 그렇기 때문에 세자리 숫자로 결과가 어떨지에 대한 표준 약속을 정하고 이를 HTTP 상태코드 라고 합니다. 상태코드의 첫번째 자리는 1~5가 위치하며 이를 통해 크게 범주를 나눌 수 있습니다. 1 : 정보응답 요청을 받았으며 프로세스를 계속 진행합니다. 2 : 성공 요청을 성공적으로 받았습니다. 3 : 리다이렉션 요청을 완료하기 위해 추가 작업이 필요합..
Spanning multi-valued relationships 에 대해서 설명하기 전에 어쩌다가 해당 문제에 부딪혔는지 설명을 우선적으로 하도록 하겠습니다. 배경 설명 이번 예시에서 사용할 모델은 3개입니다. 실제로는 필드 수가 훨씬 많지만 원활한 이해를 이해 필드를 많이 줄여 적절한 예시를 만들어 보았습니다. class Sutra(models.Model): name_kor = models.CharField(max_length=255, null=True, blank=True) description = models.TextField(blank=True, null=True) def __str__(self): return self.name_kor class Evaluation(models.Model): RE..
서버 아키텍쳐를 공부하던 중에 비슷한 두 개의 개념을 접하게 되었습니다. 리버스 프록시와 로드 밸런서. 얼핏 봐서는 두 개념이 비슷해보이고 명확하게 구분이 안되서 각각에 대해서 정리하고 두 개의 차이점을 알아보도록 하겠습니다. Reverse Proxy 우선 Reverse Proxy 부터 알아보도록 합시다. Proxy의 뜻은 대리로서 이 경우 서버와 클라이언트 사이의 대리자 역할을 말합니다. 이후 포스팅에서 다루겠지만 여러 클라이언트에 대한 proxy를 Forward Proxy 라고 하고 여러 서버에 대한 proxy를 Reverse Proxy라고 합니다. 위 그림은 Reverse Proxy에 대한 그림으로서 사용자의 요청을 Reverse Proxy가 받아들이고 이를 서버에서 대리합니다. Reverse Pr..