Level128 [프로그래머스][자바스크립트][Level1] 콜라츠 추측 풀이 /** * 콜라츠추측.js * https://programmers.co.kr/learn/courses/30/lessons/12943?language=javascript */ function solution(num) { let count = 0, n = num; while (count 500 ? -1 : count; } function colatzGuess(num) { return num % 2 === 0 ? num /= 2 : (num * 3) + 1; } 문제에 주어진대로 짝수/홀수 일 때를 구분해서 처리해주면된다. 재귀로도 처리가능하나 while로 처리했다. 2022. 2. 28. [프로그래머스][자바스크립트][Level1] 이상한 문자 만들기 풀이 /** * 이상한문자만들기.js * https://programmers.co.kr/learn/courses/30/lessons/12930?language=javascript */ function solution(s) { return s.split(" ").map(makeWeiredStr).join(" "); // 1 } function makeWeiredStr(str) { return str.split("").map((char, idx) => idx % 2 === 0 ? char.toUpperCase() : char.toLowerCase()).join(""); // 2 } 1. s 를 공백 단위로 쪼개서 makeWeiredStr 함수에 넘겨준다. 2. 넘어온 string 의 index 짝/홀 여부를.. 2022. 2. 25. [프로그래머스][자바스크립트][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. [프로그래머스][자바스크립트][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 * Level1 * https://programmers.co.kr/learn/courses/30/lessons/86491 */ function solution(sizes) { var maxOfMax = 0, maxOfMin = 0; sizes.forEach((size) => { maxOfMax = Math.max(maxOfMax, Math.max(...size)); maxOfMin = Math.max(maxOfMin, Math.min(...size)); }); return maxOfMax * maxOfMin; } 가로/세로 중 큰 것 중에 가장 큰 것(maxOfMax), 가로/세로 중 작은 것 중에 가장 큰 것(maxOfMin)을 기준으로 지갑을 만들면 해결된다. 2022. 1. 9. [프로그래머스][자바스크립트][Level1] 약수의 개수와 덧셈 풀이 /** * 약수의개수와덧셈.js * Level1 * https://programmers.co.kr/learn/courses/30/lessons/77884 */ function solution(left, right) { var answer = 0; for (let i = left; i 2022. 1. 9. [프로그래머스][자바스크립트][Level1] 나누어 떨어지는 숫자 배열 풀이 /** * 나누어떨어지는숫자배열 * Level1 * https://programmers.co.kr/learn/courses/30/lessons/12910 */ function solution(arr, divisor) { const answer = arr.filter((num) => num % divisor === 0).sort((a, b) => a - b); if (answer.length === 0) return [-1]; return answer; } 나누어 떨어지는 수를 % 연산자로 확인하고 오름차순으로 정렬해서 return 한다. answer에 아무 값도 없을 경우 -1 을 담은 배열을 return 하는 케이스를 처리해준다. 2022. 1. 9. [프로그래머스][자바스크립트][Level1] 같은 숫자는 싫어 풀이 /** * 같은숫자는싫어.js * Level1 * https://programmers.co.kr/learn/courses/30/lessons/12906 */ function solution(arr) { var answer = []; arr.forEach((num ,idx, orgArr) => { if (num !== orgArr[idx + 1]) answer.push(num); }); return answer; } 연속적으로 나타나는 숫자들 중에 바로 다음 인덱스 숫자가 다른 값인 경우, 즉 연속된 수 중 가장 마지막 숫자만 answer 에 넣어주는 방식으로 해결했다. 2022. 1. 9. 이전 1 2 3 다음