일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 자바스크립트코딩테스트
- CSS
- stack문제
- 자바스크립트 알고리즘 문제
- 리액트쿼리
- 자바스크립트 문제 풀이
- 자바스크립트 연결리스트
- leetcode문제풀이
- 객체 프로퍼티
- til
- Baekjoon
- next13
- Next
- 타입스크립트
- Next.js13
- 자바스크립트 문제풀이
- 자바스크립트 문제
- 제로베이스
- 프론트엔드
- 알고리즘문제풀이
- 리액트
- JS
- NPM
- leetcode
- 자바스크립트 알고리즘
- 프로그래머스
- JavaScript
- HTML
- lodash
- 자바스크립트
- Today
- Total
목록Code note/자바스크립트 알고리즘 문제풀이 (56)
코드노트
더보기 문제 설명 a, b, c, d 순으로 저장된다고 했을 때, b, a, c, d 순으로 꺼내기 위해서는 push, push, pop, pop, push, pop, push, pop 순서대로 꺼내면 된다. 꺼내야하는 알파벳 순서가 정해질때 push/pop으로 꺼내져야 하는 동작을 계산하는 프로그램을 작성해야한다. push = 0; pop = 0; 배열로 반환한다. * 주어진 순서로 못 꺼낼 경우, 빈 배열로 반환한다. #1 입력값 = bacd #1 출력값 = [0, 0, 1, 1, 0, 1, 0, 1] #2 입력값 = dabc #2 출력값 = [] #3 입력값 = edcfgbijha #3 출력값 = [ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1..
문제 설명 문자열 s가 주어지면 문자를 반복하지 않고 가장 긴 부분 문자열의 길이를 찾습니다. ex ) 1# s = "abcabcbb" 2# s = "bbbbb" 3# s = "pwwkew" 문제는 간단하다 s문장에서 문자를 반복하지 않고 각각 다른 문자열로만 되어 있는 문자의 길이를 반환하면 된다. var lengthOfLongestSubstring = function (s) { let strLth = 0; let current = ""; for (let i = 0; i < s.length; i++) { current = current.substring(current.indexOf(s[i]) + 1); current += s[i]; console.log(current); if (current.lengt..
더보기 문제 설명 일부 언어에서는 배열의 길이를 변경할 수 없으므로 대신 배열 번호의 첫 번째 부분에 결과를 배치해야 합니다. 더 공식적으로, 중복을 제거한 후 k 요소가 있으면 nums의 처음 k 요소가 최종 결과를 보유해야 합니다. 처음 k개 요소를 넘어 무엇을 남겨두는지는 중요하지 않습니다. 숫자의 처음 k 슬롯에 최종 결과를 배치한 후 k를 반환합니다. 다른 어레이에 추가 공간을 할당하지 마십시오. O(1) 추가 메모리를 사용하여 제자리에서 입력 배열을 수정하여 이 작업을 수행해야 합니다. 와..문제 이해가 이렇게 어려운건 또 처음인거같다.. easy문제인데 계속 맞게 문제를 풀었는데 테스트가 통과되지 않았다.. 내가 문제 이해를 못했구나... 배열을 return하려고 했는데 배열을 return하..
더보기 문제 설명 - 같은 짝의 괄호 위치를 찾아 출력 - 입력은 계산 수식으로 주어지며, 괄호의 짝 별 위치를 [시작, 끝] 으로 찾아 2차원 배열 형태로 반환 - 위치 시작 값은 0으로 시작, 하나라도 짝이 맞지 않을 경우 빈 배열을 반환한다. 입력 값 - "(a+b)" - "(a*(b+c)+d)" - "(a*(b+c)+d+(e)" - "(a*(b+c)+d)+e)" - "(a*(b+c)+d)+(e*(f+g))" 출력 값 #1 [ [ 0, 4 ] ] #2 [ [ 3, 7 ], [ 0, 10 ] ] #3 [] #4 [] #5 [ [ 3, 7 ], [ 0, 10 ], [ 15, 19 ], [ 12, 20 ] ] - 2차원 배열에 넣어야하는게 처음에 문제가 어려웠다.. - 빈 배열을 넣고 따로 문제를 계산해..
문제 설명 1, 2, 3을 가진 배열에서 - 1, 2, 3 - 3, 2, 1 - 3, 1, 2 이 세가지를 stack을 통해서 입력 순서대로 숫자를 없앨 수 있는지를 true, false로 반환해야한다. function answer(train) { let stack = []; let num = 0; for (let i = 0; i < train.length; i++) { while (stack.length === 0 || stack[stack.length - 1] < train[i]) { // while (stack의 길이가 0이거나 현재 stack의 가장 끝에 있는 수가 train[i]보다 작을때) stack.push(++num); // 1, 2, 3 을 추가 } if (stack[stack.lengt..
문제설명 더보기 두 개의 정렬된 연결 목록 list1과 list2의 헤드가 제공됩니다. 두 목록을 하나의 정렬된 목록으로 병합합니다. 목록은 처음 두 목록의 노드를 연결하여 만들어야 합니다. 병합된 연결 목록의 헤드를 반환합니다. 문제를 풀기 전부터 ListNode로 정렬 된 연결리스트가 있었다. 순차적으로 node를 가지고와서 연결하면 되는 문제였다. 두개의 노드가 있었는데 값을 비교하면서 새로운 노드에 추가해주었다. 다른 풀이를 보고 빠른 답이 있었는데 이해를 하는데에는 이 풀이가 더 나에게 맞는거 같다. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? nu..
이번 연결리스트는 원형연결리스트의 문제이다. 일반 연결리스트와 다르게 원형으로 연결되어 있다보니깐 신경써야할 게 더 많았다. 문제 설명 입력값 8, 2, 3 출력 값 2, 5, 8, 4, 1, 7, 3, 6 - n = 8, m = 2, k = 3 - 1, 2, 3, 4, 5, 6, 7, 8 로 n의 사람이 있을 때 m = 2번부터 시작하여 k = 3번의 간격으로 이동해서 나오는 숫자들을 출력 해야한다. 그림으로 보면 이렇게 한 방향으로 돌면서 3칸씩 이동하며 숫자를 하나씩 추가하여 순차적으로 출력하면 된다. 연결리스트를 처음 봤을 때는 이해가 안되었는데 이제 어느 정도 이해도가 높아진거 같다. 우선 4가지로 나누었다. 1. n = 8 개의 node를 만들어서 원형 연결리스트를 만든다. 2. 첫 시작 he..
문제는 간단하다 head → 1 → 2 → 3 → null 이렇게 node가 연결되어 있는 연결리스트를 head → 3 → 2 → 1 → null 역순! 반대로 출력하게 수정해야한다. 연결리스트에 대해서 이해가 되어야지만 풀 수 있는 문제였다. 이 문제를 이해하는데 하루가 넘게 걸렸다... 하... 그만큼 성취감은 두배였지만... 제발 바로 이해해줘 내 머리야.. 우선 코드부터 보면서 설명을 해야할거 같다. function answer(ll) { let current = ll.head, prev = null, next; while (current !== null) { next = current.next; current.next = prev; prev = current; current = next; } l..
Valid Parentheses 유효한 괄호 더보기 문제설명 '(', ')', '{', '}', '[' 및 ']' 문자만 포함하는 문자열이 주어지면 입력 문자열이 유효한지 확인합니다. 다음과 같은 경우 입력 문자열이 유효합니다. 열린 브래킷은 동일한 유형의 브래킷으로 닫아야 합니다. 열린 브래킷은 올바른 순서로 닫아야 합니다. 모든 닫기 대괄호에는 동일한 유형의 해당 여는 대괄호가 있습니다. - 이번 문제는 stack을 활용하는 문제이다. - 간단하게 말하면 입력값을 넣어놓고 입력값에 맞는 값들을 빼면서 length를 0으로 만들어내면 된다. var isValid = function (s) { const stack = []; for (let i = 0; i < s.length; i++) { if (s[i..
더보기 문제설명 들어오는 입력값을 연결리스트에 node를 추가한다. 입력값 #1 [4, 7, 1, 10, 6] #2 [3, 10, 6, 9, 11, 3, 4] #2 [5, 8, 7, 3, 4, 1, 2, 7, 10, 7] 출력 값 #1 4 -> 7 -> 1 -> 10 -> 6 -> null #2 3 -> 10 -> 6 -> 9 -> 11 -> 3 -> 4 -> null #3 5 -> 8 -> 7 -> 3 -> 4 -> 1 -> 2 -> 7 -> 10 -> 7 -> null - 연결리스트에 대해서 공부한 후에 연결리스트에 대해서는 이해를 했다고 생각했다. 그러나 문제를 막상 풀려고 하니깐 node, this.head, LinkedList를 어떻게 사용해야할지 감이 잘 잡히질 않았다. 입력값을 순서대로 가지..