본문 바로가기

Algorithm54

[완전탐색] 멘토링 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 M번의 시험 결과 등수를 가지고 멘토와 멘티를 정한다. 만약 A학생이 멘토, B학생이 멘티가 되려면 A학생은 M번의 시험에서 모두 B학생보다 높은 등수를 얻어야 한다. M번의 시험 결과가 주어졌을 때 멘토, 멘티의 짝을 만들 수 있는 경우가 총 몇 가지인지 출력한다. 👉 입력 학생 수(N)와 테스트 수(M)가 주어지고 M개의 테스트 결과가 학생번호로 주어진다. 제일 앞에서부터 1, 2, 3, ..., N등의 순서이다. 만약 N=4이고 3, 1, 4, 2의 입력이 주어졌다면 3번 학생이 1등, 1번 학생이 2등, 4번 학생이 3등, 2번 학생이 4등이다. 👈 출력 멘토와 멘티의 짝을 만들 수 있는 경우의 수를 출력한다. 📝 풀이 fun.. 2021. 12. 13.
[완전탐색] 뒤집은 소수 자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다. 📋 문제 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.
[문자열탐색] 문자열 압축 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.