본문 바로가기

분류 전체보기365

[FP&ES6+] go, pipe, curry - (3) 함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✏️ 예제 const fruits = [ { name: '사과', price: 1000, quantity: 1 }, { name: '바나나', price: 2000, quantity: 2 }, { name: '딸기', price: 1500, quantity: 3 }, { name: '레몬', price: 1000, quantity: 4 }, { name: '복숭아', price: 3000, quantity: 5 } ]; const go = (...args) => reduce((a, f) => f(a), args); const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs); con.. 2021. 12. 11.
[FP&ES6+] go, pipe, curry - (2) 함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ curry const curry = f => (a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._); 함수를 값으로 다루면서 받아둔 함수를 원하는 시점(= 원하는 개수의 인자가 들어왔을 때)에 평가시킨다. 함수(f)를 받아 함수 ((a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._))를 리턴한다. 리턴된 함수 ((a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._))가 실행되었을 때 인자가 2개 이상이라면 받아둔 함수를 즉시 실행한다. 인자가 2개 이상이 아니라면 함수 (..... 2021. 12. 10.
[FP&ES6+] go, pipe, curry - (1) 함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. *** 코드를 값으로 다루기 => 평가하는 시점을 원하는 대로 다룰 수 있다. ✅ go const go = (...args) => reduce((a, f) => f(a), args) 인자들을 받아 하나의 값으로 축약해 나가는 함수이다. go( 0, a => a + 1, a => a + 10, a => a + 100, console.log ); // output // 111 위와 같이 쓰게 된다면 args는 순서대로 0, f, f, f, f가 들어간다. 따라서 0이 a => a + 1의 인자로 들어가 1이라는 값이 되고 이 값이 a => a + 10의 인자로 들어가 11이라는 값이 되고 또 이 값이 a => a + 100의 인.. 2021. 12. 10.
[문자열탐색] 문자열 압축 https://cansweep.tistory.com/219 [문자열탐색] 문자열 압축 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자의 바로 오른쪽에 cansweep.tistory.com 위 문제를 다시 python을 이용해 풀어보았다. 💡 사용된 개념 re.sub() string에서 pattern을 repl로 변환한 문자열을 반환한다. re.sub(pattern, repl, string, count=0, flags=0) pattern : 찾을 패턴 repl : 대체할 문자열 string : 주어진 문자열 📝 풀이 import re answer = "" s = "KKHSSSSSSEE" co.. 2021. 12. 10.
[문자열탐색] 문자열 압축 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자의 바로 오른쪽에 반복 횟수를 표기한다. 위와 같은 방법으로 주어진 문자열을 압축해 출력한다. 단, 반복 횟수가 1인 경우 생략한다. 👉 입력 길이가 100을 넘지 않는 문자열이 주어진다. 👈 출력 압축된 문자열을 출력한다. 📝 풀이 function solution(s) { let answer = ""; let count = 1; for (let i = 0; i < s.length; i++) { if (s[i] === s[i + 1]) { count++; } else { answer += s[i] + `${count}` count = 1; } .. 2021. 12. 10.
[문자열탐색] 가장 짧은 문자거리 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소 거리를 출력한다. 👉 입력 길이가 100을 넘지 않는 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로 이루어진다. 👈 출력 문자열 s의 각 문자가 문자 t와 떨어진 최소 거리를 순서대로 출력한다. 📝 풀이 function solution(s, t) { let answer = []; let pos = s.indexOf(t); let arr_pos = []; let distance = []; while (pos !== -1) { arr_pos.push(pos); pos = s.indexOf(t, pos + 1) } for (let i = 0.. 2021. 12. 10.
[문자열탐색] 숫자만 추출 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만들어 출력한다. 만약 입력으로 "su7bywv1ie3"이 주어진다면 이 문자열에서 숫자는 7, 1, 3이고 이것을 자연수로 만들면 713이 된다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않는다. 👉 입력 길이가 50을 넘지 않는 숫자가 섞인 문자열이 주어진다. 👈 출력 자연수를 출력한다. 💡 사용된 개념 isNaN() 어떤 값이 NaN인지 판별한다. 인자로 들어온 수가 NaN이라면 true, 아니면 false를 반환한다. 여기서 NaN은 Not A Number로 숫자가 아닌 문자를 나타낸다. 📝 풀이 function solution.. 2021. 12. 10.
[문자열탐색] 유효한 팰린드롬 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 한다. 문자열이 입력될 때, 해당 문자열이 팰린드롬이면 "YES"를, 아니면 "NO"를 출력한다. 단, 팰린드롬 검사시 알파벳만 가지고 회문을 검사하며 대소문자를 구분하지 않는다. (알파벳 이외의 문자들은 무시한다.) 👉 입력 길이 100을 넘지 않는 문자열이 주어진다. 👈 출력 검사 결과를 "YES" 혹은 "NO"로 출력한다. 📝 풀이 function solution(s) { let answer = "YES"; s = s.toLowerCase().replace(/[^a-z]/ig, ''); if (s.split('').reverse().join('') !== s) an.. 2021. 12. 10.
[문자열탐색] 회문 문자열 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다. 문자열이 입력으로 들어왔을 때 해당 문자열이 회문 문자열이라면 "YES"를, 아니면 "NO"를 출력한다. 단 회문을 검사할 때 대소문자를 구분하지 않는다. 👉 입력 길이 100을 넘지 않고 공백이 없는 문자열이 입력된다. 👈 출력 회문 문자열인지의 결과를 "YES" 또는 "NO"로 출력한다. 💡 사용된 개념 String.split() String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다. 반환값은 구분자마다 끊은 부분 문자열을 담은 배열이다. str.split([separator[, limit]]) separator : 원본 문자열을 끊어야 .. 2021. 12. 9.