본문 바로가기

INT NUM

(170)
Remove Invalid Parentheses | LeetCode 301 | Python3 🐍 📄 목차 제목: https://leetcode.com/problems/remove-invalid-parentheses/🐍 🤔 문제 : Remove Invalid Parentheses | LeetCode 301 문제: https://leetcode.com/problems/remove-invalid-parentheses/ 주어진 문자열에서 가장 긴 palindrome을 찾는 문제입니다. 💡 풀이 1. 구구절절.. iteration 주어진 s의 모든 substring에 대해서, valid parenthesis 여부를 확인하면서, 가장 긴 것들을 저장해서 반환해야 겠다. 그럼 TLE 가 날 것 같으니, (와 )의 갯수를 대조해서 더 많은걸 많은 갯수만큼 삭제한 substring먼저 확인하고.. 거기서 없으면 (..
[AWS] CDK 시작하기 & Argument of type 'this' is not assignable to parameter of type 'Construct' 이슈 해결 1. CDK Cli 설치 및 CDK bootstrap AWS CDK CLI를 설치하려면 먼저 Node Package Manager(NPM)가 설치되어 있어야 합니다. # npm으로 aws-cdk 설치 npm install -g aws-cdk # 성공적으로 설치 되었는지 확인 cdk --version # > 2.20.0 (build 738ef49) 배포하게 될 대개의 AWS CDK 스택들은 스택과 함께 배포되는 외부 파일(예: AWS Lambda 함수나 Docker 이미지) 등의 자산을 포함하고 있습니다. CDK는 이를 Amazon S3 버킷 또는 기타 컨테이너에 업로드하여 배포 중에 AWS CloudFormation에서 사용할 수 있게 합니다. 배포하려면 이러한 컨테이너가 AWS 계정 및 배포하려는 리전..
[AWS] 컨테이너 기반 Lambda 생성하기, Lambda에서 S3업로드 프로젝트 내에서 음성파일 분석을 위해 파이썬 Librosa 라이브러리를 활용해야 했는데요, 전체프로젝트를 서버리스로 구성할 계획이어서 이 부분도 람다로 추가해보았습니다. 일반적으로 람다에 외부 라이브러리를 활용하려면 Lambda layers를 이용하면 되지만, librosa는 패키지 사이즈가 커서 이 방법으로는 업로드가 어려웠습니다. EFS에 패키지를 설치하고 람다에 EFS를 마운트하는 방법도 있었지만 제가 시도해보니 잘 안되어서.. 람다 전체를 도커로 컨테이너화 해서 올리는 방법을 택했습니다. 01. 람다 핸들러 소스코드 작성 람다 핸들러 소스코드를 작성해줍니다. 아래 코드는 쿼리패러미터로 입력받은 url에 대해서 librosa의 split(묵음 구간 식별)를 수행하고 결과를 boto3라이브러리를 이용..
[AWS] Lamda + API Gateway 시작하기 | GET, Query String 전달, json.dumps 한글 깨짐 해결 람다 간단하대서 써볼려했더니.. 엄청 삽질했네요;; Lamda + API Gateway를 활용하여 간단한 API를 개발해보겠습니다. 1. API 규격 이번에 만들 api 는 GET/test 입니다. GET /test - queryString으로 first_name과 last_name이 있을 경우 : body에 hello {first_name} {last_name} 반환 - queryString이 비어있을 경우 : body에 hello anonymous 반환 2. Lambda 함수 생성 AWS Lambda > 함수생성 > 새로작성 test라는 이름의 함수를 하나 만들어 주었습니다. 새로 생성한 함수로 들어가서 코드 탭에서 코드를 원하는대로 편집합니다. 람다에서는, event 인자를 통해 request인자들..
Big-O 표기법 (1) 기본 원칙, 배열(ArrayList), 재귀함수, 이진트리(Binary Tree, BT)에서의 Big-O 알고리즘 문제를 풀다보면 big-O notation을 통해 시간복잡도, 공간복잡도를 계산하곤 합니다. 저는 대략적인 호출 수, for loop, 캐싱 등을 염두에 두고 계산하곤 했는데요, CTCI(Cracking the Code Interview)책을 읽다 보니 recursion, string, binary tree 등에서 보다 정확한 Big-O Notation에 대한 부분이 있어 정리해두려고 합니다. 01. big-O 표기법이란? big-O 표기법은 N에 따라 수행시간이 어떻게 변화하는지를 표현해주는 도구입니다. 두 big-O 표기법 중 어떤게 더 수행시간이 빠른지를 비교하는것이 아닙니다! 즉, big-o 표기로 더 크다고 해서 항상 더 느린 것은 아닙니다. 입력과 연산에 따라 O(N) 코드가 O(1)..
Longest Increasing Subsequence | LeetCode 810 | Python3 🐍 📄 목차 🤔 문제 : Longest Increasing Subsequence | LeetCode 810 문제: https://leetcode.com/explore/interview/card/top-interview-questions-medium/111/dynamic-programming/810/ 주어진 리스트 내 가장 긴 increasing subsequence 의 길이를 찾는 문제입니다. subsequence 란 배열에서 몇개의 요소를 삭제해서 만들 수 있는 sequnce를 말합니다. (순서는 바꾸지 않습니다) 예를들어, [2, 1, 3]의 subsequence는 아래와 같습니다. [2, 1, 3], [2, 1], [2, 3], [1, 3], [2], [1], [3], [] increasing subs..
Task Scheduler | LeetCode 826 | Python3 🐍 📄 목차 🤔 문제 : Task Scheduler | LeetCode 826 문제: https://leetcode.com/explore/interview/card/top-interview-questions-medium/114/others/826/ input으로 Task리스트와 cooltime값인 숫자 n이 들어옵니다. 같은 Task사이에는 무조건 n 이상의 cooltime을 쉬어야 합니다. 이런 상황에서 주어진 task를 다 처리하기 위해 필요한 최소 cpu time을 구하는 문제입니다. 가장 남은 task를 가장 먼저 처리한다 까지는 직관적으로 이해가 되었고, 그래서 task를 처리해가며 남은 task를 계속 sorting해서 다음 task를 뽑고, cooltime은 deque로 관리하였는데도 TLE가 ..
Majority Element | LeetCode 824 | Python3 🐍 📄 목차 🤔 문제 : Majority Element | LeetCode 824 문제: https://leetcode.com/explore/interview/card/top-interview-questions-medium/114/others/824/ 주어진 배열에서 절반 이상을 차지하는 원소를 구하는 문제입니다. 단, Could you solve the problem in linear time and in O(1) space? 💡 풀이 1. Majoirity Component는 다른 원소 다 합친거보다 더 많이 나온다는 점! 그냥 dictionary 이용해서 각 원소별 나온 횟수 count하는 걸로는 도저히 O(1) space만에 해결이 안 되어 discussion을 봤습니다.. ㅎ 핵심은 Majoirit..