본문 바로가기

분류 전체보기110

leetcode 932 - Beautiful Array https://leetcode.com/problems/beautiful-array/ 풀이 $i < k < j$ 일 때 $2\cdot A[k] = A[i] + A[j]$ 를 만족하는 i, k, j가 없는 배열을 구해야 한다. 길이 n짜리 배열 [1, 2, 3, ..., n]이 있을 때 이 조건을 만족하는 배열을 찾기 위해 문제를 나눌 수 있다. [1, 3, 5, ..., (n+1)/2] 배열과 [2, 4, 6, ..., n/2]로 문제를 나눈 다음에 각 배열의 beautiful array를 구했다고 생각해보자. 각 배열 안에서는 정의 그대로 위 조건에 해당하는 i, k, j가 없다. 이때 두 배열을 concat 한 배열에도 그런 i, k, j는 없음이 보장된다. 앞 배열에 i, 뒷 배열에 j가 있을 때 A.. 2020. 10. 6.
leetcode 239 - Sliding Window Maximum https://leetcode.com/problems/sliding-window-maximum/ 풀이 $O(n log k)$ 처음 k구간을 담은 set을 만들어 놓고(중복이 가능하므로 multiset), 이후 한 칸씩 옮길 때마다 다음 값을 insert / 빠지는 값을 erase 했다. 주의할 점은 multiset에서 erase 할 때 value를 넘기면 value 값을 가지는 모든 원소를 삭제하기 때문에 iterator를 넘겨야 한다. https://www.cplusplus.com/reference/set/multiset/erase iterator는 지우려고 하는 value값들 중 아무 값이나 상관없기 때문에 lower_bound로 찾아서 지웠다. 입력으로 들어오는 nums 배열을 순회하면서 모든 원소.. 2020. 10. 6.
SAM으로 API Gateway - Lambda - DynamoDB 구성하기 AWS 서버리스 서비스로 인프라를 구성할 때 자주 사용되는 패턴이 있다. API Gateway - Lambda - DynamoDB로 구성하는 것인데 특히 Lambda와 DynamoDB는 무기한 프리티어를 제공하기 때문에 토이 프로젝트로 사용하기에도 제격이다. API Gateway 주의할 점은 앞단에 API Gateway로 프록시를 하기 때문에 람다의 응답으로 단순히 값만 넘길 게 아니라 API Gateway response에 맞게 적절한 포맷을 맞춰주어야 한다. SAM template에는 람다의 Properties아래 Events 속성을 추가한다. Resources: SimpleDynamoCRUD: Properties: Events: SimpleDynamoCRUDAPI: Type: Api Properti.. 2020. 8. 26.
Serverless Application Model(SAM) 기본 AWS에 작성한 코드를 배포하고 관리하기 위한 많은 도구들이 있다. serverless 도 흔히 사용되지만 Serverless Application Model(SAM)도 손쉽게 사용할 수 있다. 다른 도구들과 마찬가지로 SAM도 application code를 작성하고 관련 인프라 설정을 yaml으로 작성한다. 배포는 package와 deploy 두 단계로 나뉜다. package 명령으로 코드를 s3로 업로드하고 SAM template으로 작성한 yaml은 업로드한 코드의 주소를 포함한 cloudformation으로 변환된다. 그 후에 deploy 명령으로 cloudformation stack을 생성해서 실제 인프라에 적용시킨다. SAM cli 설치 aws repo 추가 $ brew tap aws/tap.. 2020. 8. 25.
django rest framework의 serializer, view 추상화 과정 간단한 User 모델과 Serializer를 정의하고 추상화를 통해 반복되는 코드를 줄여보며 누가 마법을 부리는지 확인해보자. user/models.py GENDERS = [ ('M', 'Male'), ('F', 'Female'), ] class User(models.Model): name = models.CharField(blank=True, max_length=255) gender = models.CharField(blank=True, choices=GENDERS, max_length=1) created = models.DateTimeField(auto_now_add=True) user/serializers.py class UserSerializer(serializers.Serializer): pk .. 2020. 6. 25.
django model 정리 Django로 모델링할 때 항상 찾아보는 정보로 정확한 내용은 https://docs.djangoproject.com/en/3.0/ref/models/fields/#model-field-types에서 확인하면 좋다. Field Type AutoField auto increment 되는 IntegerField이다. 명시하지 않으면 아래와 같은 코드가 자동으로 생성된다. id = models.AutoField(primary_key=True) BigAutoField AutoField와 같지만 숫자 범위가 64bit이다. BigIntegerField BigAutoField와 같지만 값을 양수만 보장하지 않고, 음수인 경우까지 포함한다. BinaryField binary data를 저장하는 필드로 bytes, b.. 2020. 6. 13.