level223 [프로그래머스][자바스크립트][Level2] 영어 끝말잇기 풀이 /** * 영어끝말잇기.js * https://programmers.co.kr/learn/courses/30/lessons/12981?language=javascript */ function solution(n , words) { const length = words.length + words.length % n; let order = null; for (let i = 1; i < length; i++) { const idx = i % words.length; const beforeWord = words[idx - 1]; const currWord = words[idx]; if (beforeWord[beforeWord.length - 1] !== currWord[0] || words.indexOf(.. 2022. 3. 5. [프로그래머스][자바스크립트][Level2] 숫자의 표현 풀이1 - 효율성 테스트 3, 5 실패 /** * 숫자의표현.js * https://programmers.co.kr/learn/courses/30/lessons/12924?language=javascript */ /** 완전 탐색, 효율성 테스트 3, 5 실패 */ function solution(n) { var answer = 0; for (let i = 1; i < Math.ceil(n/2); i++) { let sum = 0; for (let j = i; j n) { break; } } } return answer + 1; } 완전 탐색으로 연속된 값들을 더해서 답이되는 모든 경우를 2중 for문을 통해 확인하는 방식이다. 1에서부터 시작해서 하나씩 시작하는 숫자를 늘려가면서 확인했다. 중간 값보다.. 2022. 3. 3. [프로그래머스][자바스크립트][Level2] 피보나치 수 재귀로 풀이 시도 function solution(n) { return fibonacci(n); } const memoization = { 0: 0, 1: 1, 2: 1 } function fibonacci(n) { if (memoization[n] !== undefined) return memoization[n]; const answer = ((fibonacci(n - 1) % 1234567) + (fibonacci(n - 2) % 1234567)) % 1234567; if (memoization[n] === undefined) memoization[n] = answer; return answer; } 주어지는 n의 범위가 2 이상 100,000 이하인 자연수이므로 상당히 범위가 넓어서 Memoizat.. 2022. 2. 25. [프로그래머스][자바스크립트][Level2][카카오] 캐시 풀이 /** * 캐시.js * https://programmers.co.kr/learn/courses/30/lessons/17680?language=javascript */ const MISS = 5, HIT = 1; // 1 function solution(cacheSize, cities) { if (cacheSize === 0) return MISS * cities.length; // 2 let answer = 0; const cache = []; cities .map((city) => city.toLowerCase()) // 3 .forEach((city) => { const cityIdx = cache.indexOf(city); if (cityIdx > -1) { answer += HIT; // .. 2022. 2. 22. [프로그래머스][자바스크립트][Level2][카카오] 괄호 변환 풀이 /** * 괄호변환.js * https://programmers.co.kr/learn/courses/30/lessons/60058?language=javascript * https://philosopherprogrammer.com/101 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. .. 2022. 2. 21. [프로그래머스][자바스크립트][Level2][카카오] 뉴스 클러스터링 풀이 /** * 뉴스클러스터링.js * https://programmers.co.kr/learn/courses/30/lessons/17677?language=javascript */ function solution(str1, str2) { const arr1 = sliceByTwo(str1); // 1 const arr2 = sliceByTwo(str2); // 1 return Math.floor(getJaccardSimilarity(arr1, arr2) * 65536); // 2, 3 } function sliceByTwo(str) { const upStr = str.toUpperCase(); const arr = []; for (let i = 0; i < upStr.length - 1; i++) { .. 2022. 2. 20. [프로그래머스][자바스크립트][Level2][카카오] 방금그곡 풀이 /** * 방금그곡.js * https://programmers.co.kr/learn/courses/30/lessons/17683?language=javascript */ function solution(m, musicinfos) { const resultArr = musicinfos.map((info) => { const [start, end, name, scale] = info.split(","); const time = calcTime(start, end); const scaleArr = replaceStr(scale).split(""); const sRepeat = Math.floor(time / (scaleArr.length)); const sRemainder = time % (scaleA.. 2022. 2. 16. [프로그래머스][자바스크립트][Level2][카카오] 메뉴 리뉴얼 풀이 /** * 메뉴리뉴얼.js * https://programmers.co.kr/learn/courses/30/lessons/72411?language=javascript */ function solution(orders, course) { const answer = []; const orderMap = course.reduce((obj, num) => { obj[num] = { max: 0, orderComb: {}}; return obj; }, {}); course.forEach((num) => { orders.forEach((order) => { getCombinations(order.split(""), num).forEach((orderCombinated) => { const val = orde.. 2022. 2. 14. [프로그래머스][자바스크립트][Level2] 위장 풀이 /** * 위장.js * Level2 * https://programmers.co.kr/learn/courses/30/lessons/42578?language=javascript */ function solution(clothes) { const clothesMap = {}; clothes.forEach((cloth) => { if (!clothesMap[cloth[1]]) { clothesMap[cloth[1]] = 1; } else { clothesMap[cloth[1]]++; } }); return Object.keys(clothesMap).reduce((answer, key) => { answer *= clothesMap[key] + 1; return answer; }, 1) - 1; } 옷.. 2022. 1. 10. [프로그래머스][자바스크립트][Level2] 구명보트 풀이 /** * 구명보트 * 탐욕법 * https://programmers.co.kr/learn/courses/30/lessons/42885?language=javascript */ function solution(people, limit) { let answer = 0, idx1 = 0, idx2 = people.length - 1; people.sort((a, b) => a - b); while (idx1 limit) { answer++; idx2--; } else { answer++; idx1++; idx2--; } } return answer; } 가장 가벼운 사람을 고정해놓고 가장 무거운 사람부터 내려오면서 가벼운 사람 + 무거운 사람 or 무거운 사람 only 로 나눠서 보트를 태우는 방식이다. 2022. 1. 8. [프로그래머스][자바스크립트][Level2] 큰 수 만들기 풀이 /** * 큰 수 만들기 * 탐욕법 * https://programmers.co.kr/learn/courses/30/lessons/42883?language=javascript */ function solution(number, k) { var answer = []; let i = 0, j = 0; while(i = number[j])) { answer.push(number[j]); j++; } else { answer.pop(); i++; } } return answer.join("") + number.slice(j); } 자릿수가 큰 숫자의 크기가 커질수록 전체 .. 2022. 1. 8. [프로그래머스][자바스크립트][Level2] H-Index /** * H-index * 정렬 * https://programmers.co.kr/learn/courses/30/lessons/42747?language=javascript */ function solution(citations) { var answer = 0; citations.sort((a, b) => b - a); for (let i = 0; i = i + 1) { answer++; } else { break; } } return answer; } module.exports = solution; 내림차순으로 정리해놓고, 1보다 인용 수가 많은 논문이 1편 이상 있는지를 시작으로 2보다 인용수 많은 논문 2편 확인, 3.. 2022. 1. 4. 이전 1 2 다음