본문 바로가기

카카오15

[프로그래머스][자바스크립트][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.
[프로그래머스][자바스크립트][Level1][카카오] 신규 아이디 추천 풀이 /** * 신규아이디추천.js * https://programmers.co.kr/learn/courses/30/lessons/72410?language=javascript 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 .. 2022. 2. 19.
[프로그래머스][자바스크립트][Level1][카카오] 키패드 누르기 풀이 /** * 키패드누르기.js * https://programmers.co.kr/learn/courses/30/lessons/67256?language=javascript */ function solution(numbers, hand) { let currLeft = "*", currRight = "#"; let answer = ""; numbers.forEach((num) => { const rule = staticRule(num); if (rule) { answer += rule; if (rule === "L") { currLeft = num; } else { currRight = num; } } else { const fromLeft = BFS(graph, currLeft, num); const .. 2022. 2. 19.
[프로그래머스][자바스크립트][Level1][카카오] 크레인 인형뽑기 게임 풀이 /** * 크레인인형뽑기게임.js * https://programmers.co.kr/learn/courses/30/lessons/64061?language=javascript */ function solution(board, moves) { const stk = []; let answer = 0; moves.forEach((col) => { for (let i = 0; i 0) { board[i][col - 1] = 0; if (stk.length > 0 && stk[stk.length - 1] === item) { stk.pop(); answer += 2; // 인형 2개가 만나서.. 2022. 2. 19.
[프로그래머스][자바스크립트][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.
[프로그래머스][자바스크립트][Level1][카카오] 비밀 지도 풀이 /** * 비밀지도.js * https://programmers.co.kr/learn/courses/30/lessons/17681?language=javascript */ function solution(n, arr1, arr2) { let answer = new Array(n).fill(null); return answer.map((num, idx) => { let binary = (arr1[idx] | arr2[idx]).toString(2); binary = binary.padStart(n, 0); binary = binary.replace(/1/g, '#'); return binary.replace(/0/g, ' '); }); } Topic - 비트 연산 OR 비트 연산을 통해 나온 결과 값.. 2022. 2. 13.
[프로그래머스][자바스크립트][Level1][카카오] 다트 게임 풀이 /** * 다트게임.js * https://programmers.co.kr/learn/courses/30/lessons/17682 */ function solution(dartResult) { let answer = []; const regexp = /(\d+)[S|D|T][*|#]?/g; const darts = Array.from(dartResult.matchAll(regexp)).map((val) => val[0]); for (let i = 0; i < darts.length; i++ ) { let point = parseInt(darts[i].match(/(\d+)/)[0]); let bonus = darts[i].match(/[S|D|T]/)[0]; let option = darts[i]... 2022. 2. 11.
[프로그래머스][자바스크립트][Level1][카카오] 신고 결과 받기 풀이 /** * 신고결과받기.js * https://programmers.co.kr/learn/courses/30/lessons/92334 */ function solution(id_list, report, k) { const id_report = id_list.reduce((obj, id) => { obj[id] = { reportList: new Set([]), reported: 0 } return obj; }, {}); report.forEach((value) => { const [userId, reportedId] = value.split(" "); if (!id_report[userId]["reportList"].has(reportedId)) { id_report[userId]["reportLi.. 2022. 2. 11.
[프로그래머스][자바스크립트][Level1][카카오] 실패율 /** * 실패율.js * https://programmers.co.kr/learn/courses/30/lessons/42889 */ function solution(N, stages) { const stageReached = new Array(N+1).fill(0); stages.forEach((stage) => { for (let i = 0; i < stage; i++) { stageReached[i]++; } }); const stageFailed = []; for (let j = 0; j < stageReached.length - 1; j++) { const failureRate = (stageReached[j] - stageReached[j+1]) / (stageReached[j]); stage.. 2022. 1. 5.