본문 바로가기

JavaScript84

[완전탐색] 뒤집은 소수 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 N개의 자연수가 입력된다. 각 자연수를 뒤집은 후 그 수가 소수이면 뒤집힌 수를 출력한다. 예를 들어 32가 입력된다면 뒤집은 수 23은 소수이므로 23을 출력한다. 👉 입력 N개의 자연수가 입력된다. 👈 출력 소수를 입력된 순서대로 출력한다. 💡 사용된 개념 소수 2보다 큰 자연수 중에서 1과 자기 자신을 제외한 자연수로는 나누어 떨어지지 않는 자연수이다. 먼저 소수의 정의를 가지고 구현한 소수를 판별하는 코드는 다음과 같다. function isPrime(num) { if (num === 1) return false; for (let i = 2; i < num; i++) { if (num % i === 0) return false.. 2021. 12. 13.
[완전탐색] 자릿수의 합 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 N개의 자연수가 입력되면 각 자연수의 자릿수 합을 구하고 그 합이 최대인 자연수를 출력한다. 자릿수의 합이 같은 경우 기존 자연수가 큰 수가 답이 된다. 만약 236과 1235가 있다면 이 둘의 자릿수 합은 11로 동일하지만 1235가 더 큰 수 이므로 1235가 답이 된다. 👉 입력 N개의 자연수가 주어진다. 👈 출력 자릿수의 합이 최대인 자연수를 출력한다. 📝 풀이 function solution(arr) { let answer = 0, max = Number.MIN_SAFE_INTEGER; let temp; for (const a of arr) { temp = 0; for (const s of String(a)) { temp +.. 2021. 12. 13.
[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.
[문자열탐색] 문자열 압축 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자의 바로 오른쪽에 반복 횟수를 표기한다. 위와 같은 방법으로 주어진 문자열을 압축해 출력한다. 단, 반복 횟수가 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.