일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 알고리즘 문제
- 자바스크립트 문제 풀이
- react
- NPM
- 리액트
- 프론트엔드
- stack문제
- Baekjoon
- lodash
- 자바스크립트 연결리스트
- til
- leetcode
- leetcode문제풀이
- 자바스크립트 문제풀이
- Next
- 제로베이스
- 자바스크립트코딩테스트
- JavaScript
- HTML
- 자바스크립트
- 자바스크립트 알고리즘
- 프로그래머스
- 알고리즘문제풀이
- Next.js13
- 리액트쿼리
- 자바스크립트 문제
- 타입스크립트
- CSS
- next13
- JS
- Today
- Total
목록Code note (225)
코드노트
배열 [ 5, 2, 4, 1, 7, 5 ] Q, 배열에는 각 높이들이 있다. 높이가 같은 높이로 맞추고 맞춰지는 높이 값들이 얼마인지 구해야한다. 1. 높이값을 모두 더하고 배열의 길이만큼 나눠 평균을 구한다. 2. 원래 높이를 비교해가며 평균보다 낮으면 그 차를 결과값에 더해준다. let sum = 0; for (let i = 0; i block) { result += sum - block; } } - for문으로 해도 되지만 for...of로 간단하게 할 수 있었다.
문제 점수를 채점하는 프로그램을 만들어야한다. 1은 1점 0은 0점 연속한 정답 개수가 있으면 가산점으로 1점씩 더 받게 된다. 채점 : [ 1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ] 점수 : [ 1, 2, 0, 1, 2, 0, 1, 2, 3, 4 ] for문을 통해서 이중for문을 하면서 비교를 해서 점수를 넣을 생각을 했다.. 아직도 나는 멀었나보다...... 간단한 방법이 있었다.. let score = 0; for (let i = 0; i < mark.length; i++) { if (mark[i] == 1) { result += ++score; } else { score = 0; } } - 변수를 만들어서 연속 된 정답이 있으면 ++이 되도록 해준다. - 배열의 점수별로 1이 맞으면..
ex ) [ 2, 7, 11, 15 ], 13] 2, 7, 11, 15 의 배열 중에서 2개를 더하여 13이 나오는 값의 인덱스를 반환해야하는 문제이다. 이러한 문제는 풀어본적이 있어서 그렇게 어렵지 않았다. 1. 이중for문을 통해서 13이 되는 값들을 찾기만 하면 되는 문제였다. for (let i = 0; i < nums.length; i++) { for (let j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] == target) { return [i, j]; } } } - 이렇게 이중 for문을 통해서 작성하게 되면 시간적합도는 O(n^2)이다. - for문 하나로는 어떻게 풀어야할까? - map을 이용해서 하는 방법 let nums = [ 2..
* *** ***** ex ) 3이 주어졌을 때 *을 이용해서 트리를 만들어 주는 프로그램 for문 2개를 통해서 공백 및 * 개행문자를 순서대로 출력이 되도록 만들어주면 되는 문제다. for (let i = 0; i < height; i++) { for (let j = 0; j < height - i - 1; j++) { str += " "; } for (let j = 0; j < i * 2 + 1; j++) { str += "*"; } str += "\n"; } 처음에는 " ", 두번째는 "*", 그리고 \n 개행문자를 통해서 출력되게 할 수 있다. - " " 공백을 주는 부분에서 height - i - 1 에서 3이 들어오면 0일 때는 2 1일때는 1 3일 때는 0으로 첫 번째 줄에는 2칸의 공백 ..
Q. 배열에서 높은값 2개를 찾아서 출력하기. 2개의 수를 뽑는 방법은 여러방법이 있다. 먼저 오름차순으로 변경 후 앞에 인덱스 2개만 반환시키게 되면 끝나는 문제다. 그러나 하나씩 비교해가면서 두개의 값을 출력해야하면 어떻게 해야할까? 1.배열 첫번째 두번째 값을 먼저 비교하여 정해준다. result = nums[1] > nums[0] ? [nums[1], nums[0]] : [nums[0], nums[1]]; - 배열의 1번과 0번째를 비교하여 정해준다. - 다음 for문에서 첫번째와 두번째의 크기로 비교하면서 최대값들을 찾도록 한다! 2. 더한 값에 100을 뺀다. for (let i = 0; i result[0]) { result[1..
Q. 배열이 9개가 있다. 배열에서 7개를 더하면 100이 된다. 9개의 배열중에서 2개를 빼고 7개로 합이 100이 되는 배열을 출력해야 한다. 처음 생각 했을 때는 경우의수를 통해서 9개의 배열중에 7개의 를 경우의수로 뽑아 전체 합이 100이 되는 수를 계산해볼까? 라는 생각을 했다. 그렇게 하기에는 너무 많은 경우의 수가 있기 때문에 9개를 모두 더한 후 100을 뺀 값에 만족하는 두 수를 찾으려고 했다. 1. 배열의 값을 모두 더한다. 2. 더한 값에 100을 뺀다. 3. 뺀 값에 만족하는 2개의 수를 찾아낸다. 4. 기존 배열과 비교하여 2개를 빼고 출력한다. 1. 배열의 값을 모두 더한다. 2. 더한 값에 100을 뺀다. let sum = 0; for (let i = 0; i < dwarf...
입력 값 [ 0,1,2,2,2,7 ] 필요한 갯수 배열 [ 1, 1, 2, 2, 2, 8 ] 출력 값 [ 1, 0, 0, 0, 0, 1 ] 필요한 갯수에 모자란 만큼 출력을 해야한다. 1. 필요한 갯수 배열을 변수로 만들기 let res = [1, 1, 2, 2, 2, 8]; 2. 필요한 갯수 배열에서 입력 값을 뺀 값을 출력하기 let count = 0; // 배열끼리 뺀 값을 저장할 변수 for (let i = 0; i < chess.length; i++){ count = res[i] - chess[i]; result.push(count); } ---------------------------------------------------- for (let i = 0; i < chess.length; i..
ex ) [6,3,11,3] 배열이 주어질 때, 수열의 있는 수 중에서 최소값의 위치를 모두 출력해야한다. 최소값은 3이고 1, 3번 자리에 3이 있으므로, 1. 최소값을 구한다. let nums = [6,3,11,3] let min = Number.MAX_SAFE_INTEGER; for(let i = 0; i nums[i]) { min = nums[i] } } - 변수 min을 만들어서 정수 최대값으로 넣어주고 for문으로 비교하면서 최소값을 min에 넣는다. 2. 최소값을 통해서 인덱스 위치를 출력한다. for(let i in nums){ if(min = nums[i]) { result.push[i]; } } - for..in 으로 min과 n..
등차수열의 항을 찾는 방법! 항 번호가 없는 경우에는 -1을 반환시키도록 한다! ex) 초항은 1, 공차는 2 일 때 1, 3, 5, 7 의 7에 해당하는 항을 반환시켜라. // 입력값 a = 1, d = 2, n = 7 // 출력 값 4 f(1) = 1 f(2) = 3 f(3) = 5 f(4) = 7 1. for문으로 찾는 방법. function permutation(a, d, n) { let index = -1 let sum; for(let i = 1; ; i++){ sum = a + d * (i - 1); if(sum > n) { index = -1; break; } if(sum == n) { index = i; break; } } } - 먼저 변수를 만들어서 변수에 for문으로 찾는 항의 수를 구..
예를 들어 3, 8, x, 18... 이 있을 때 빠진 등차 수열 x를 찾아서 반환해야한다. 초항은 3이다. 1. x의 등차 값을 찾는 방법은? [0] [1] [2] 배열의 인덱스로 생각하면 [0] [1], [1] [2] 의 등차 값을 구해서 더하고 나누기 3을 해준다. 3과 8의 등차는 5. 8과 18의 등차는 10. (5 + 7) / 3은? 5 let y; for (let i = 1; i < num.length; i++){ y += num[i] - num[i - 1] } y /= num.length; - y값에 배열의 인덱스를 하나씩 빼가면서 값을 더해준다. ex) num[1] - num[0] num [2] - num[1] - 더한 y의 값에 배열의 길이만큼 나누어서 공차를 구한다. 2. 빈 inde..