분류 전체보기87 [프로그래머스][자바스크립트][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. [백준][자바스크립트][Silver4] 1920 수 찾기 Binary Search 풀이 var fs = require('fs'); var input = fs.readFileSync('/dev/stdin').toString().trim().split("\n"); const N = parseInt(input[0]), n = input[1].split(" ").map((num) => parseInt(num)).sort((a, b) => a - b); const M = parseInt(input[2]), m = input[3].split(" ").map((char) => parseInt(char)); let result = []; const binarySearch = (arr, start, end, val) => { if (start > end) return fals.. 2022. 1. 18. [백준][자바스크립트][Silver4] 10773 제로 풀이 /** * 제로 * 10773.js * https://www.acmicpc.net/problem/10773 * 스택 */ const [K, ...n] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n'); const stk = []; for (let i = 0; i acc + num, 0)); 스택 관련 문제로 해결법은 간단하다. 0일 때 pop 아닐 때 push 해주면 된다. no.. 2022. 1. 18. [Leetcode][자바스크립트][Easy] 141. Linked List Cycle 풀이1 /** * 141_LinkedListCycle.js * Easy * https://leetcode.com/problems/linked-list-cycle/ */ const nodeArr = []; var hasCycle = function(head) { if (head === null || head.next === null) return false; if (nodeArr.indexOf(head.next) > -1) return true; nodeArr.push(head.next); return hasCycle(head.next); }; 문제 예시에서 input 이 배열로 주어지는 것처럼 나타나서 처음에 좀 헷갈렸다. hasCycle 함수 자체를 재귀로 놓고 돌렸는데 그 결과로 nodeArr 배열이.. 2022. 1. 11. [프로그래머스][자바스크립트][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. [Leetcode][자바스크립트][Medium] 36. Valid Sudoku 풀이 /** * 36_ValidSudoku.js * Medium * https://leetcode.com/problems/valid-sudoku/ */ var isValidSudoku = function(board) { const row = new Array(9).fill(null).map(() => new Set([])), col = new Array(9).fill(null).map(() => new Set([])), box = new Array(9).fill(null).map(() => new Set([])); for (let i = 0; i < 9; i++) { for (let j = 0; j < 9; j++) { if (board[i][j] !== ".") { if (row[i].has(board.. 2022. 1. 10. [Leetcode][자바스크립트][Easy] 242. Valid Anagram 풀이 /** * 242_ValidAnagram.js * Easy * https://leetcode.com/problems/valid-anagram/ */ var isAnagram = function(s, t) { if (s.length !== t.length) return false; const sSorted = s.split("").sort().join(""); const tSorted = t.split("").sort().join(""); return sSorted === tSorted; }; anagram 을 구하는 문제로 주어진 두 string의 모든 char 의 종류와 개수가 동일해야한다. 결국 동일한 방식으로 정렬했을 때 동일한 값이어야한다. 2022. 1. 10. [Leetcode][자바스크립트][Easy] 383. Ransom Note 풀이 /** * 383_RansomNote.js * Easy * https://leetcode.com/problems/ransom-note/ */ var canConstruct = function(ransomNote, magazine) { const mHash = {}; magazine.split("").forEach((char) => { if (!mHash[char]) { mHash[char] = 1; } else { mHash[char]++; } }); for (let i = 0; i < ransomNote.length; i++) { if (!mHash[ransomNote[i]]) return false; mHash[ransomNote[i]]--; } return true; }; ransomNote .. 2022. 1. 10. [Leetcode][자바스크립트][Easy] 387. First Unique Character in a String 풀이 /** * 387_FirstUniqueCharacterInAString.js * Easy * https://leetcode.com/problems/first-unique-character-in-a-string/ */ var firstUniqChar = function(s) { const strHash = {}; const sArr = s.split(""); sArr.forEach((char) => { if (!strHash[char]) { strHash[char] = 1; } else { strHash[char]++; } }); for (let i = 0; i < sArr.length; i++) { if (strHash[sArr[i]] === 1) return i; } return -1; }; 해시.. 2022. 1. 10. 이전 1 2 3 4 5 ··· 8 다음