본문 바로가기
728x90
반응형

전체 글318

[Algorithm] RMQ (Range Minimum Query) RMQ는 어떤 배열이 존재할 때 특정 범위의 가장 작은 값을 구할 때 사용하는 자료구조이다. 다음과 같은 배열이 있다고 하자. RMQ (1, 5)의 의미는 Arr[1] 부터 Arr[5] 까지의 값 중 가장 작은 값을 의미한다. 위 배열의 경우 "3"이 된다. 이 RMQ를 구하는 방법에는 여러가지가 있지만 그 중 전처리 과정의 시간 복잡도가 O(N*log N)이고 원하는 값을 얻을 때의 시간 복잡도가 O(1)인 방법을 공부해보려고 한다. RMQ 전처리 과정 우선 길이가 1인 RMQ를 구한다. RMQ (0, 0), RMQ (1, 1), RMQ(2, 2) ... RMQ(N, N)을 모두 구하는 것이다. 길이가 1이기 때문에 당연하게도 RMQ(i, i)의 값은 arr[ i ]의 값과 똑같을 것이다. 그 다음 길.. 2023. 4. 19.
[Network] pipelined protocol 기존 패킷을 보내는 과정은 패킷을 보내고 ACK를 받고, 패킷을 보내고 ACK를 받고 이러한 과정을 반복했다. 이러한 방식을 개선하기 위해서 pipelined protocol은 여러 개를 한꺼번에 보내고 여러 ACK를 한꺼번에 받는 방식을 사용한다. 이러한 파이프라이닝의 형식에는 두가지가 있다. go-back-N과 selective repeat이다. go-back-N (GBN) 우선 N개를 보내고 ACK를 받는 방식이다. 노란색은 패킷을 보냈으나 아직 ACK를 받지 않은 상태이고 파란색은 아직 보내지 않은 상태이다. 노란색인 패킷을 in-flight 패킷이라고 한다. ACK를 받게되면 노란색에서 초록색으로 바뀌고 send_base가 하나 증가한다. send_base가 증가함에 따라 window size는.. 2023. 4. 18.
[AWS][Spring] Amazon Lex 스프링 부트에 배포하기 (2) https://growth-coder.tistory.com/152 이전 포스팅에서 간단하게 날씨와 미세먼지를 알려주는 Amazon Lex 챗봇을 만들어보았다. 물론 람다를 연결하지 않았기 때문에 실제로 동작하지는 않고 단지 의도를 분류해내는 수준이다. 우선 스프링부트로 배포를 해보고 람다를 연결해서 실제로 동작하게끔 해보려 한다. 우선 스프링이 Lex에 접근할 수 있도록 IAM 사용자를 만들어야 한다. IAM -> 사용자에서 사용자를 추가한다. 다음과 같이 설정을 한다. 직접 정책 연결을 선택한다. AmazonLexFullAccess 정책을 검색해서 선택하고 다음으로 넘어간다. 사용자 목록을 돌아간다. 생성한 사용자에 들어가서 보안 자격 증명에 들어간다. 아래로 내려보면 액세스 키 만들기가 있다. 선택한.. 2023. 4. 17.
[AWS][Lex] Amazon Lex 사용해서 챗봇 구현하기 (1) aws 서비스 중 Amazon Lex라는 서비스는 손쉽게 챗봇을 구현할 수 있도록 도와준다. 이 Lex를 사용해서 간단한 챗봇 기능을 구현해보려 한다. 프리 티어 계정을 사용할 예정이고 다음과 같은 제한 아래에서 무료로 사용할 수 있다. Amazon Lex 구성 요소 우선 Amazon Lex의 구성 요소부터 알아야 한다. Amazon Lex의 구성 요소는 의도, 발화, 슬롯, 이행 4가지로 나뉜다. 날짜와 지역의 날씨를 물어볼 경우를 예시로 구성 요소를 살펴보려 한다. 의도 (Intents) : 사용자의 입력이 어떠한 의도를 가졌는지 ex) 날씨를 알고 싶어한다. 발화 (Utterances) : 문장 ex) 오늘 서울 날씨 알려줘, 내일 서울 날씨 어떄? 슬롯 (Slots) : 수행할 때 필요한 정보 e.. 2023. 4. 13.
728x90
반응형