일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- JWT
- OOP
- MySQL
- 인접리스트
- 탐욕법
- css
- LifeCycle
- node.js
- 코딩테스트
- typescript
- Interceptor
- 알고리즘
- 프로그래머스
- Linux
- Deep Dive
- winston
- html
- REST API
- puppeteer
- 자료구조
- GraphQL
- Spring
- java
- nestjs
- bean
- Kubernetes
- dfs
- 인접행렬
- TIL
- Today
- Total
목록전체 글 (241)
처음부터 차근차근
C++이나 Java의 경우 Linkedlist 자료구조를 지원하지만, Javascript는 그렇지 않다. (브라우저 언어라 그런지 이런게 없다니..) Node.js Backend로써 한번 자료 구조를 직접 제작해봤다. Node Class 만들기 단일 연결 리스트를 구현하기 위해서는 먼저 노드를 만들어주는 Class를 생성해야 한다. // 단일 연결 리스트 Node 제작 class class Node { constructor(data) { this.data = data; this.next = null; } } data를 입력하고 반환하는 Node 클래스를 하나 생성하였다. Linkedlist Class 만들기 class LinkedList { constructor() { // 처음 만들었을 경우, head..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/oplgN/btszGDpmIJp/92LYuW0ZbAZ9GfVfchiTT1/img.png)
Linkedlist란? 연결 리스트(Linkedlist)는 각 노드가 데이터와 포인터를 가지고 한줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이다. 데이터를 담고있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전 노드와의 연결을 담당하게 된다 - wikipidea 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료구조이다. 삽입과 삭제 : O(1) (삭제의 경우 특정 노드를 아는 경우에는 1이지만, 모르는 경우에는 n만큼의 시간이 소요된다.) 탐색 : O(n) 연결 리스트의 가장 첫 번째 지점을 Head라고 부른다. 마지막 노드는 Null을 가리킨다. 장단점 장점 연결 리스트는 데이터 구조의 큰 틀을 바꾸지 않고 노드를 추가하거나 삭제하기 쉽다. 연결 리스트는 배..
오늘 한 일 코어 Javascript - 데이터 타입 정리 프로그래머스 코딩테스트 퍼즐원스튜디오 코딩테스트, 인적성 검사 코어 Javascript - 데이터 타입 정리 자바스크립트 데이터 타입에 대하여 다시 정리했다. 코어 자바스크립트는 동작 원리와 이론에 대하여 간단하게 정리되어 있다. 면접 준비하기에 굉장히 좋다. 변수는 변경 가능한 데이터가 담길 수 있는 공간이고, 식별자는 그 변수의 이름을 말한다. 데이터 타입은 값의 저장 방식과 불변성 여부에 따라 바뀌며, 기본형은 값이 담긴 주소값을 바로 복제하고, 불변성을 띄지만, 참조형은 값이 담긴 주소값들로 이루어진 묶음(객체)을 가리키는 주소값을 복제하며, 이는 참조형이기 때문에 불변성을 띄지 않는다. 참조형 데이터를 불변값으로 변경해야 하는 경우가..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/doqyYZ/btszAZlODSy/RhKlqp9Y92kr524ikIFTVk/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12951 문제 설명 내 풀이 function solution(clothes) { // 의상의 종류를 key, 그것에 일치하는 의상의 개수를 hash라고 한다. let key = []; let hash = []; let answer = 1; // 반복문을 돌려 hash table을 생성하자. for(let i = 0; i < clothes.length; i++) { if (key.indexOf(clothes[i][1]) == -1) { key.push(clothes[i][1]); hash.push(1); } else { hash[key.indexOf(clothes[i][1])]++; } } ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cjrfCM/btszCnzFgZq/CdskUkaSAhCSkitDKVLNM1/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/70129 문제 설명 내 풀이 function solution(s) { var answer = [0,0]; let result = method(answer, s) return result } function method(array, s) { if (s === "1") { return array } else { array[0]++ let deleteS = s.replaceAll('0','') array[1] += s.length - deleteS.length let parseS = deleteS.length.toString(2) return method(array, parseS) } } 재귀함..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Eie8x/btszCF01QeB/87VSbybvfo9XDzQnQnEanK/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120871 문제 설명 내 풀이 function solution(n) { // 1. answer = 1로 설정 let answer = 1 // 2. 정수 n만큼 반복문 실행 for (i = 1;i < n; i++){ // 2-1 반복문을 돌리때마다 숫자 1을 추가 answer++ // 2-2 math 함수 실행 answer = math3(answer) } return answer } function math3(answer) { // 3으로 나뉘어지거나, 3이 포함되어 있는 경우 if (answer % 3 == 0 || String(answer).includes('3')){ // 숫자를 증가시..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/m4w01/btszy6eEtOQ/BZn188stYbMwXm326oJmEK/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120864 문제 설명 내 풀이 function solution(my_string) { return my_string.split(/[a-z]/ig).filter((v) => v !== '').reduce((acc,cur) => acc + (+cur),0) } 정규표현식을 사용하여 문제를 풀었다. 다른 사람의 풀이 function solution(my_string) { return my_string.split(/\D+/).reduce((acc, cur) => acc + Number(cur), 0); } \D+ 라는 정규 표현식을 배웠고, 그리고 나는 filter를 적용했는데 생각해보니 필터를 ..
오늘 한 일 코딩 테스트 8문제 풀이 코딩테스트 8문제 풀이 퍼즐원 스튜디오 코딩테스트 관련 문제 풀이를 진행했다. 프로그래머스는 Lv0~2까지는 난이도 차이가 상이하게 난다. 코딩테스트도 조금씩 풀어야겠다는 생각 코테를 준비하면서, 미리 준비했으면 어떨까라는 생각을 진행하였다. 또한 자료구조와 알고리즘를 조금 더 준비하면 Lv3도 잘 풀 수 있다는 생각을 하고, 기본기도 챙길 수 있다고 판단. 다만, Javascript로는 자료구조를 구현하기 어려운 점도 존재하기 때문에 정확히 판단해야 한다.
오늘 한 일 Javascript Deep Dive 공부 portfolio OpenAI API Response 구현 Javascript 공부 자바스크립트 Deep Dive 공부를 진행했다 property Attribute, 생성자 함수를 통한 객체 생성, 함수와 일급 객체를 공부 객체 생성방식으로는 리터럴을 통해 생성할 수도 있지만, 생성자 함수를 통해서도 생성할 수 있다. 생성자 함수를 사용한다면 구조가 동일한 객체 여러 개를 간편하게 생성할 수 있다는 장점이 존재한다. 단점은 new 연산자를 붙여줘야 한다는 것. 일급 객체의 조건으로는 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rkXt7/btszAlhrSn7/jlLloFD9u6I87suBuKiJnk/img.png)
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17681 문제 설명 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부..