JavaScript84 [FP&ES6+] take 함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ take const take = (limit, iter) => { let res = []; for (const a of iter) { res.push(a); if (res.length == limit) return res; } return res; } limit값과 이터러블을 인자로 받는 함수이다. take 함수에서는 이터러블을 순회하다 이터러블의 limit번째 까지만 담아 리턴한다. 즉, 많은 값을 받아서 일정한 값 만큼 잘라주는 함수라고 할 수 있다. console.log(take(2, [1, 2, 3])); // output // [1, 2] ✅ 지연 평가의 효율성 L.range와 같이 지연성을 가지는 값을 이터레이.. 2021. 12. 25. [FP&ES6+] range & L.range 함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ range const range = length => { let i = -1; let res = []; while (++i a + b; var list = range(4); console.log(reduce(add, list)); // output // [0, 1, 2, 3, 4] // 6 숫자를 인자로 받아 0부터 그 숫자까지의 값을 요소로 가지고 있는 배열을 리턴한다. 함수의 내부를 살피면 length라는 인자를 받고 i가 0부터 length의 값까지 while문을.. 2021. 12. 22. [스택] 괄호 문자 제거 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 입력된 문자열에서 소괄호 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력한다. 만약 입력된 문자열이 (AB(C)D)E(F)라면 출력은 E가 된다. 👉 입력 첫 번째 줄에 길이가 100을 넘지 않는 문자열이 입력된다. 👈 출력 괄호 사이의 모든 문자를 지우고 남은 문자들을 출력한다. 📝 풀이 function solution(s) { let answer; let stack = []; for (const i of s) { if (i === ")") { while (stack.pop() !== "("); } else stack.push(i) } answer = stack.join('') return answer; } let str =.. 2021. 12. 20. [스택] 올바른 괄호 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 괄호로 구성된 문자열이 입력으로 주어질 때, 이들이 올바른 괄호이면 "YES", 아니면 "NO"를 출력한다. (())()(())의 경우 올바른 괄호이나 (()()의 경우에는 올바른 괄호가 아니다. 👉 입력 첫 번째 줄에 괄호로 구성된 문자열이 주어진다. 문자열의 최대 길이는 30이다. 👈 출력 "YES" 혹은 "NO"를 출력한다. 💡 사용된 개념 Stack(스택) 특수한 목적을 가지는 자료구조로 순서가 있는 entry들의 자료구조이다. Stack은 LIFO(Last-In, First-Out)의 구조로 저장된 data를 꺼낼 때 가장 최근에 들어간 data부터 꺼내진다. Stack에 넣는 작업을 push, 꺼내는 작업을 pop이라고 하.. 2021. 12. 20. [투포인터/해시/슬라이딩윈도우] 모든 아나그램 찾기 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 아나그램이란 두 문자열이 알파벳의 나열 순서는 다르지만 그 구성이 일치한 두 문자열을 말한다. 긴 문자열 A와 짧은 문자열 B가 주어진다. A 문자열에서 B 문자열과 아나그램이 되는 A의 부분 문자열 개수를 구해 출력한다. 아나그램 판별 시 대소문자가 구분되며 부분 문자열은 연속된 문자열이다. 👉 입력 첫 번째 줄에 A 문자열이 입력된다. 두 번째 줄에 B 문자열이 입력된다. 이때 A 문자열의 길이는 10,000을 넘지 않으며 B 문자열은 A 문자열보다 길이가 작거나 같다. 👈 출력 A의 연속 부분 문자열이 B 문자열과 아나그램이 되는 개수를 출력한다. 📝 풀이 function compare(map, t) { for (const x .. 2021. 12. 20. [프로그래머스] 크레인 인형뽑기 게임 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/64061 📋 문제 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다.) 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로.. 2021. 12. 19. [프로그래머스] 오픈채팅방 문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42888 📋 문제 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을.. 2021. 12. 19. [해시] 아나그램 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 아나그램이란 두 문자열이 알파벳의 나열 순서는 다르지만 구성이 일치한 것을 말한다. 예를 들면 AbaAeCe와 baeeACA는 알파벳의 나열 순서는 다르지만 알파벳의 구성은 다음과 같다. AbaAeCe => A(2) a(1) b(1) C(1) e(2) baeeACA => A(2) a(1) b(1) C(1) e(2) 두 문자열의 알파벳과 그 알파벳의 개수가 모두 일치하므로 둘 중 한 문자열을 재배치하면 나머지 하나의 문자열을 만들 수 있다. 길이가 같은 두 개의 문자열이 주어지면 두 문자열이 아나그램인지 판별하여 그 결과를 출력한다. 이때 두 문자열의 대소문자는 구분된다. 👉 입력 첫 번째 줄에 첫 번째 문자열이 입력된다. 두 번째 줄.. 2021. 12. 17. [해시] 학급 회장 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 학급 회장 후보로 기호 A, B, C, D, E 후보가 등록했다. 학급 회장 투표는 학생들이 각 후보의 기호를 적어 내는 것으로 이루어진다. 이때 투표 결과가 발표되면 어떤 후보가 학급 회장으로 선출되었는지를 구하고 학급 회장의 기호를 출력한다. 👉 입력 첫 번째 줄에 반 학생 수 N이 주어진다. 두 번째 줄에 N개의 투표 용지에 쓰인 각 후보의 기호가 문자열로 주어진다. 이때 주어진 문자열은 문자 사이의 기호나 공백이 없다. 👈 출력 학급 회장으로 뽑힌 후보의 기호를 출력한다. 💡 사용된 개념 Hash 다양한 길이를 가진 데이터(key)를 고정된 길이를 가진 데이터로 매핑한 값이다. key를 매우 큰 값이라 가정했을 때 이 값을 자.. 2021. 12. 17. 이전 1 2 3 4 5 6 ··· 10 다음