본문 바로가기

프로그래머스52

[프로그래머스][자바스크립트][Level2] 프린터 /** * Queue */ class Node { constructor(value){ this.value = value; this.next = null; } } class Queue { constructor(){ this.first = null; this.last = null; this.size = 0; } enqueue(val){ var newNode = new Node(val); if(!this.first){ this.first = newNode; this.last = newNode; } else { this.last.next = newNode; this.last = newNode; } return ++this.size; } dequeue(){ if(!this.first) return null; va.. 2022. 1. 3.
[프로그래머스][자바스크립트][Level2] 소수 찾기 /** * 소수 찾기 * 완전 탐색 * https://programmers.co.kr/learn/courses/30/lessons/42839?language=javascript */ function solution(numbers) { var answer = 0, combination = [], numSet = new Set([]); const nums = numbers.split(""); for (let i = 1; i { getPermutations(comb).forEach((permutation) => { numSet.add(parseInt(permutation.join(""))) }); }); numSet.forEach((num) => { if (primeNumberChecker(parseInt(n.. 2022. 1. 3.
[프로그래머스][자바스크립트][Level1] 모의고사 /** * 모의고사 * 완전탐색 */ function solution(answers) { const supoja = [0, 0, 0]; const supojaPattern = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]; answers.forEach((val, idx) => { for (let i = 0; i < supojaPattern.length; i++) { if (val === supojaPattern[i][idx%supojaPattern[i].length]) supoja[i]++; } }); const max = Math.max(...supoja); return supoja.reduce((rst, matc.. 2022. 1. 3.
[프로그래머스][자바스크립트][Level2] 카펫 /** * 카펫 - 완전 탐색 * https://programmers.co.kr/learn/courses/30/lessons/42842?language=javascript * 가로 >= 세로 */ /** 1 */ function solution(brown, yellow) { const area = brown + yellow; for (let i = 1; i 2022. 1. 3.
[프로그래머스][자바스크립트][Level1][카카오] 숫자 문자열과 영단어 /** * 숫자 문자열과 영단어 * https://programmers.co.kr/learn/courses/30/lessons/81301?language=javascript */ function solution(s) { var answer = [], str = ""; for (let i = 0; i < s.length; i++) { const numChar = parseInt(s[i]); if (isNaN(numChar)) { str += s[i]; const changedNum = changeStringToInt(str); if (changedNum !== null) { answer.push(changedNum); str = ""; } } else { answer.push(numChar); } } re.. 2022. 1. 2.
[프로그래머스][자바스크립트][Level1] 로또의 최고 순위와 최저 순위 /** * 로또의 최고 순위와 최저 순위 * https://programmers.co.kr/learn/courses/30/lessons/77484 */ function solution(lottos, win_nums) { let min = 7, max = 7, match = 0; const joker = lottos.reduce((acc, num) => { if (num === 0) acc++; return acc; } , 0); const lottosWithoutJoker = lottos.filter((num) => num !== 0); lottosWithoutJoker.forEach((num) => { if (win_nums.some((winNum) => winNum === num)) match++ }.. 2022. 1. 1.
[프로그래머스][자바스크립트][Level1] 부족한 금액 계산하기 https://programmers.co.kr/learn/courses/30/lessons/82612?language=javascript function solution(price, money, count) { var answer = 0, sum = 0; for (let i = 1; i money) { answer = sum - money; } return answer; } 2021. 8. 5.
[프로그래머스][자바스크립트][Level2][카카오] 오픈채팅방 function solution(record) { const uidToName = record.reduce((obj, item) => { const itemArr = item.split(" "); if (!obj[itemArr[1]]) { obj[itemArr[1]] = itemArr[2]; } else if (itemArr[0] === "Enter" || itemArr[0] === "Change") { obj[itemArr[1]] = itemArr[2]; } return obj; }, {}); const answer = record.reduce((arr, item) => { const itemArr = item.split(" "); if (state[itemArr[0]]) { arr.push(`${ui.. 2021. 7. 22.
[프로그래머스][자바스크립트][Level2][카카오] 문자열 압축 function solution(s) { if (s.length === 1) return 1; // make data var length = Math.floor(s.length/2); var data = new Array(length).fill(null).map(() => new Array()); for (let i = 1; i { let num = 1; return arr.reduce((acc, char, idx, org) => { if (org[idx+1] === char) { num++; } else { num !== 1 ? acc.push(num, char) : acc.push(char); num = 1; } return acc; }, []).join("").length; }); // return.. 2021. 7. 22.
[프로그래머스][자바스크립트][Level2] 124 나라의 숫자 function solution(n) { var answer = new Array(18).fill(0); var num = n; for (let i = 18; i > -1; i--) { const powNum = Math.pow(3, i); if (i === 0) { answer[i] === num; } if (num >= powNum * 2) { answer[i] = 2; num-=powNum*2; } else if (num >= powNum) { answer[i] = 1; num-=powNum; } } answer.reverse(); while (true) { answer = answer.slice(answer.findIndex(item => item > 0)); if (answer.indexOf(0.. 2021. 7. 21.
[프로그래머스][자바스크립트][Level2] 타겟 넘버 https://programmers.co.kr/learn/courses/30/lessons/43165 function solution(numbers, target) { var answer = {number: 0}; f(numbers, 0, 0, answer, target, "+"); f(numbers, 0, 0, answer, target, "-"); return answer.number; } function f(numbers, idx, result, answer, target, calc) { if (calc === "+") { result += numbers[idx]; } else if (calc === "-") { result -= numbers[idx]; } if (numbers.length - 1.. 2021. 7. 20.
[프로그래머스][자바스크립트][Level2] 짝지어 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12973 function solution(s) { if (s.length % 2 === 1) return 0; var arr = s.split(""); var answer = new Stack(); for (let i = 0; i < s.length; i++) { if (answer.peek() === arr[i]) { answer.pop(); } else { answer.push(arr[i]); } // 이 코드 없으면 2번째 효율성에서 막힘. 질문하기에서 참조함. if(arr.length - i < answer.length) return 0; } return answer.isEmpty() ? 1 : 0; } .. 2021. 7. 20.