분류 전체보기

문제https://leetcode.com/problems/valid-parentheses/  1.function isValid(s: string): boolean { const map = { ')': '(', '}': '{', ']': '[' } const stack = []; for (let char of s) { if (char === '(' || char === '{' || char === '[') { stack.push(char); } else { const pop = stack.pop() const mappp = map[char] co..
문제https://leetcode.com/problems/roman-to-integer/description/       나열된 로마 숫자를 변환하는 문제큰 수부터 작은 수로 나열되는게 기본인데 다음 수가 더 큰 수라면 마이너스를 하면 된다.비교 대상은 딱 연속된 두 수뿐이라 순회하면서 크기 비교를 통해 더 작다면 +, 더 크다면 -  1.function romanToInt(s: string): number { const numbers = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 }; const array = s.split(''); let res..
문제https://leetcode.com/problems/palindrome-number/description/     Palindrome : 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열 등 앞뒤 똑같으면 true, 다른게 있으면 false 반환    1. function isPalindrome(x: number): boolean { const string = x.toString().split(''); let left = 0; let right = string.length - 1; while(left  주어진 number 를 string[] 으로 만들어 앞뒤로 하나씩 비교하며 뱉어냈다.       2. 다른 사람 풀이function isPalindrome(x:..
문제https://leetcode.com/problems/add-two-numbers/ 연결 리스트는 자료구조 면접 준비할 때 처음 개념 접한 것 외에는 아는 게 없어서 우선 얘를 보통 어떻게 구현하고 어떻게 사용하는지를 알아봤다. 문제에 사용되는 연결리스트 클래스/** * Definition for singly-linked list. * class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefin..
문제https://leetcode.com/problems/two-sum/description/ 1. 그냥 풀어보자function twoSum(nums: number[], target: number): number[] { for (let i = 0; i  for 문으로 순회하면서 모든 요소들을 다 찾아보고 있으니까 당연히 최선의 방법이 아니다.그런데 무슨 방법이 있는지 모르니까 일단 이렇게 했다!얘처럼 모든 경우의 수를 구하는 방법을 부르트 포스라고 한다.2중 for 문으로 돌기 때문에 시간복잡도가 O(n^2)이다.      다른 방법은 Solutions 를 봤다2. HashMap 사용function twoSum(nums: number[], target: number): number[] { co..
필요성사용자가 설문을 작성하고 그 설문에 참여했을 때의 결과를 받아보는 서비스에서서비스 자체에서 제공하는 공식적인 설문 데이터의 업로드가 필요했다.직접 설문을 생성해 넣어도 되겠지만 업로드할 설문이 한 두개가 아니었고 구글 시트로 작성되어있는 리스트를 한 번에 DB 에 업로드하는 방법이 더 효율적이라 판단했다.구글 시트의 csv 파일을 활용해도 되겠지만 데이터의 구조와 관계를유지하는게 번거롭다고 생각하여 구글 API 로 데이터를 직접 가져온 다음 데이터 구조에 알맞게 가공해서 업데이트 시키는 방식을 선택했다. Google API 세팅 사용 라이브러리googleapisnpm i googleapis 1. Google Cloud 프로젝트 생성 처음 접속하면 서비스 동의 과정부터 필요하다 이후 콘솔 메뉴에서IA..
· 인프라
계기진행중인 프로젝트에서 AWS Lambda는 ChatGPT API 를 호출하는 핵심적인 역할을 담당한다. 사용자 요청을 받아 ChatGPT API를 호출하고, 그 결과를 분석해 반환하게 되는데, 이 기능은 프로젝트의 핵심 서비스인만큼 사용자들이 주로 사용하는 기능으로 가장 많은 요청을 받을 것으로 예상된다. 이 때문에 Lambda 함수가 요청을 처리하는 동안 대기해야하고 이 과정에서 문제점이 발생할 수 있다.AWS Lambda는 여러 요청이 들어오면 자동으로 실행 환경 수를 조정해 동시성 한도까지 스케일링을 한다. 그러나 이 동시성에는 제한이 있는데 AWS 리전 내에서 최대 1,000개의 동시 실행 환경을 제공하지만 이 한도를 초과한다면 새로운 요청이 거부되거나 대기 시간이 발생할 수 있다. 프로젝트가..
배열을 학습하고 for 문으로 넘어왔다.코틀린과 비슷하면서 다른 점이 많다. 배열 선언 javaint[] students;students = new int[2]; // 이후에 값 할당int[] students;students = new int[]{90, 80, 70, 60, 50};kotlinval numbers = arrayOf(1, 2, 3, 4, 5)val numbers = IntArray(5) // 이후에 값 할당val numbers = IntArray(5) {it + 1} 자바의 new 라는 키워드가 눈에 띈다. 자바에서 'new' 키워드는 새로운 객체나 배열을 생성하는 데 사용된다.메모리에 새로운 객체 또는 배열을 할당하고 그 메모리 주소를 반환하여 사용할 수 있게 한다.'new' 를 사용하지..
김영한의 자바 입문 강의를 통해 자바를 공부하고 있다. 섹션2의 변수를 수강하고 자바는 코틀린과 데이터 타입이 어떻게 다른가 검색해보던 중에 자바에서는 int 와 같은 데이터 타입에 대한 값에서 메서드를 바로 호출할 수 없다는 것을 알았다. 왜 할 수 없는지 찾아보니 코틀린과 달리 기본 타입과 객체 타입이 구분된다고 한다. 대부분의 입문자들이 자바에서 코틀린을 순서로 학습하는 것에 비해 시작이 이상하지만 😂 타입 ( Type ) ? 어떤 값들이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 자바에서 예를 들어 String 타입의 변수에는 String 값 아니면 null 이 들어갈 수 있다. 변수에 타입이 선언되었지만 null 인지 아닌지를 추가로 검사하기 전에는 그 변수에 어떤 타입..
최종 프로젝트에서 애플리케이션 배포를 위해 GitHub Actions 의 파이프라인을 구축하여 EC2 인스턴스에 Docker 컨테이너를 실행시키기로 했다. 1 기술 채택 GitHub Actions GitHub 저장소를 사용해온 친숙함이 가장 크게 작용 추가적인 설치 필요 없이 GitHub 환경에서 이용 가능 공개 Repository 의 경우 특정 사용시간내에서 무료로 제공 AWS 직접 서버를 설치하고 관리하는 작업 대비 시간과 비용 측면에서 효율적 프로젝트가 불명확한 상태에서 필요한 리소스를 언제든지 늘이거나 줄일 수 있는 유연성, 확장성 온라인/오프라인 상 많은 학습 자료 Docker 애플리케이션의 구성과 종속성을 캡슐화하기 때문에 환경의 일관성을 보장할 수 있는 점 프로젝트에 사용하는 백/DB 를 단..
다시은
'분류 전체보기' 카테고리의 글 목록