백준[JS] > 1920번 수 찾기
·
🔒Algorithm
문제https://www.acmicpc.net/problem/1920풀이자바스크립트 set 객체를 이용해 풀면 쉽게 풀 수 있다. 일단 A[1] ... A[N] 으로 주어진 수를 set객체에 담고 주어진 M개의 수를 순회하면서 set.has 메서드를 이용해 수가 set객체에 존재하는 지 확인 하고 이를 asnwer에 반영하여 문제를 풀었다.let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");let arr = input[1].split(" ").map((n) => Number(n));let set = new Set([...arr]);let numberArr = input[3].split("..
JavaScript 일반함수, 화살표 함수 this
·
⭐FE
✅배경라이브러리의 원본 코드를 보면 객체의 메서드로 this가 꽤나 많이 사용됨을 알 수 있었고 대부분 화살표 함수대신 일반함수를 사용하길래 왜 es6 화살표함수가 아닌 일반함수를 사용했을까 라는 생각을 했었다. 그러는 와중에 this가 가리키는게 화살표함수와 일반함수에서 차이가 있음을 예전에 알게 되었고 이를 깊게 파다보니 꽤나 혼란스럽다는 생각이 들었다. 그래서 이를 포스팅으로 정리하고자 한다.   ✅사전지식`객체의 메서드로 호출` / `객체의 메서드가 아닌 그냥 호출` 이 경우를 일단 구분할 줄 알아야한다.   ✅객체의 메서드로 호출될때 `일반함수`:  함수의 스코프를 this로 가리킨다. 단 호출방법에 따라 동적으로 this가 정의된다. (1번/3번)`화살표함수`: 화살표 함수의 스코프의 상위스코..
프로그래머스[JS] > 지게차와 크레인
·
🔒Algorithm
✅문제https://school.programmers.co.kr/learn/courses/30/lessons/388353 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr🔥풀이문제를 풀 때 주의해야 할 사항이 몇가지 있는데 다음과 같다지게차로 컨테이너를 꺼낼 때 한번에 꺼내야 한다 -> 만약에 'A' 라는 출고 요청이 들어올 경우 아래와 같은 경우 맨 바깥에 있는 A만 꺼낼수 있다. 맨 바깥의 A를 꺼냈으니 빈공간이 생겼다고 가정하고 안쪽 A까지 꺼낸다고 가정 할 경우 답이 틀린다.크레인으로 꺼낸 빈공간으로 인해 지게차로 꺼낼 수 없는 컨테이너를 꺼낼 수 있으므로 지게차로 컨테이너를 꺼내기 전 반드시 크..
프로그래머[JS] > 서버 증설 횟수
·
🔒Algorithm
문제https://school.programmers.co.kr/learn/courses/30/lessons/389479 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이시간대별로 현재 서버갯수를 파악할 수 있는 servers Array를 생성하고 시간대별 유저수를 탐색하면서 증설해야되는 서버가 필요 시 이를 servers에 추가하면서 증설횟수를 카운트 하여 답을 구할 수 있었다. function solution(players, m, k) { let servers = Array(24).fill(0); let answer = 0; players.forEach((playerCnt, sTime..
백준[JS] > 1436번 영화감독 숌
·
🔒Algorithm
문제https://www.acmicpc.net/problem/1436풀이'666' 이라는 연속적인 숫자를 포함한 수들을 작은순으로 구했을 때 n번째 수를 구해야하는데 String.includes 함수를 이용해서 '666'을 포함한 수인지를 계속체크하면 n번째 작은 수를 구할 수 있다. number를 0부터 1씩 계속증가시키면서 '666'을 포함하는지 지속적으로 체크했다. ( 다행히 n이 10,000 이하의 수라고 제한이 걸려 있어 해당 풀이는 문제없다고 판단했고 문제를 풀 수 있었다. ) // https://www.acmicpc.net/problem/1436let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim();..
백준[JS] > 11726번 타일링
·
🔒Algorithm
문제https://www.acmicpc.net/submit/11726/90108724풀이2xi 크기의 타일을 채우는 방법은 2x(i-1) 크기의 타일을 채우는 방법의 수와 2x(i-1) 크기의 타일을 채우는 방법의 수를 합산한 값과 같다는 걸 알수 있어야 한다. 만약 dp[i] 가 2 x i 크기의 타일을 채우는 방법의 수라고 하면 점화식은 dp [ i ] = dp [ i-1 ] + dp [ i-2 ] 이다. 이 점화식을 이용하면 문제를 풀 수 있다. dp[1], dp[2], dp[3] 을 직접 구해보면 점화식이 성립함은 쉽게 알 수 있다.let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim();const n = ..
백준[JS] > 2606번 바이러스
·
🔒Algorithm
문제https://www.acmicpc.net/problem/2606풀이DFS로 접근하여 문제로 풀수 있었다. 일단 컴퓨터간 모든 연결정보를 근간으로 2차원 배열로 connectionMap을 만들었다 ( connectionMap[i][j] = true 일 경우 i+1 번 컴퓨터와 j+1 번 컴퓨터는 서로 연결되어 있고 false일 경우 연결되지 않음 ) dfs를 통해 한번 탐색에 들어간 컴퓨터의 연결정보를 다시 탐색하지 않도록 visited 라는 Array를 이용하였다. ( dfs를 통해 탐색하는 동안 isVisited[ i ] = true 일 경우 해당 컴퓨터는 이미 dfs를 통해 탐색이 된 상태 ) 그렇게 dfs 를 통해 1번 컴퓨터와 연결된 모든 컴퓨터들을 탐색하면 isVisited에 true 갯수..
백준[JS] > 2579번 계단오르기
·
🔒Algorithm
문제링크https://www.acmicpc.net/problem/2579문제풀이dynamic programming을 이용해서 풀수 있다. 코드에서 dp[n][0] 은 (n+1)번째 계단을 밟는데, n번째 계단을 밟고 올라온 경우의 점수합이고 dp[n][1]은 (n+1)번째 계단을 밟는데, n-1번째 계단을 밟고 올라온 경우의 점수합을 의미한다.  let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");let [stairCnt, ...stairs] = input.map((n) => Number(n));let dp = Array.from({ length: stairCnt }, () => { ..
백준[JS] > 11047번 동전0
·
🔒Algorithm
문제https://www.acmicpc.net/problem/11047풀이(1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 라는 조건이 있기때문에 조금만 생각해보면 바로 답이 나온다. K 이하이면서 가장 큰 단위의 동전으로 일단 목표금액 K를 만드는방식으로 접근하면 문제를 풀 수 있다.let fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");let [N, K] = input[0].split(" ").map((n) => Number(n));let answer = 0;for (let i = N; i >= 1; --i) { let coin = Nu..
Lodash debounce 탐색
·
⭐FE
배경lodash에서 제공하는 debounce를 각잡고 알아보고 내부 구현코드도 하나씩 살펴보았다. lodash debounce 옵션 https://lodash.com/docs/4.17.15#debounce Lodash Documentation_(value) source Creates a lodash object which wraps value to enable implicit method chain sequences. Methods that operate on and return arrays, collections, and functions can be chained together. Methods that retrieve a single value or may return a primitilodash...