Programmers
-
문제 이름 : [3차] 압축 function solution(msg) { const dic = ['A','B','C','D','E', 'F','G','H','I','J', 'K','L','M','N','O', 'P','Q','R','S','T', 'U','V','W','X','Y', 'Z']; let answer = []; msg = msg.split(''); for(let i=0; i
[Programmers] [3차] 압축 문제 - (javascript)문제 이름 : [3차] 압축 function solution(msg) { const dic = ['A','B','C','D','E', 'F','G','H','I','J', 'K','L','M','N','O', 'P','Q','R','S','T', 'U','V','W','X','Y', 'Z']; let answer = []; msg = msg.split(''); for(let i=0; i
2022.01.25 -
문제 이름 : 수식 최대화 // 딕셔너리에 arrow function 사용 const operator = { '+': (a, b) => a + b, '-': (a, b) => a - b, '*': (a, b) => a * b, }; function solution(e) { let answer = 0; const operate = [['*', '+', '-'], ['*', '-', '+'], ['+', '*', '-'], ['+', '-', '*'], ['-', '*', '+'], ['-', '+', '*']]; let str = ''; let numArr = e.split(/[\D]/g).map(Number); let operArr = e.match(/[\*\+\-]/g); for(const op of ..
[Programmers] 수식 최대화 문제 - (javascript)문제 이름 : 수식 최대화 // 딕셔너리에 arrow function 사용 const operator = { '+': (a, b) => a + b, '-': (a, b) => a - b, '*': (a, b) => a * b, }; function solution(e) { let answer = 0; const operate = [['*', '+', '-'], ['*', '-', '+'], ['+', '*', '-'], ['+', '-', '*'], ['-', '*', '+'], ['-', '+', '*']]; let str = ''; let numArr = e.split(/[\D]/g).map(Number); let operArr = e.match(/[\*\+\-]/g); for(const op of ..
2022.01.25 -
문제 이름 : [1차] 뉴스 클러스터링 문제 function solution(str1, str2) { let answer = 0; // toLowerCase로 소문자로 만든 후 배열로변경 str1 = str1.toLowerCase().split(''); str2 = str2.toLowerCase().split(''); let temp1 = []; let temp2 = []; // str들 2개씩 자른 후, 영어 소문자면 temp에 저장 const getStr = (arr, temp) => { arr.map((el, i) => { let check = arr.slice(i, i+2).join(''); if(check.match(/[a-z]{2}/)) temp.push(check); }); } getStr(..
[Programmers] [1차] 뉴스 클러스터링 문제 - (javascript)문제 이름 : [1차] 뉴스 클러스터링 문제 function solution(str1, str2) { let answer = 0; // toLowerCase로 소문자로 만든 후 배열로변경 str1 = str1.toLowerCase().split(''); str2 = str2.toLowerCase().split(''); let temp1 = []; let temp2 = []; // str들 2개씩 자른 후, 영어 소문자면 temp에 저장 const getStr = (arr, temp) => { arr.map((el, i) => { let check = arr.slice(i, i+2).join(''); if(check.match(/[a-z]{2}/)) temp.push(check); }); } getStr(..
2022.01.24 -
문제 이름 : 메뉴 리뉴얼 function solution(orders, course) { let menu = {}; // 메뉴들을 조합으로 가져오는 함수 function combination(order, idx, len, prev) { if (prev.length === len) { let cur_key = prev.sort().join(""); if (cur_key in menu) { menu[cur_key] += 1; } else menu[cur_key] = 1; return; } for (let i = idx; i < order.length; i++) { combination(order, i + 1, len, [...prev, order[i]]); } } //orders를 처음부터 끝까지 반복하면..
[Programmers] 메뉴 리뉴얼 문제 - (javascript)문제 이름 : 메뉴 리뉴얼 function solution(orders, course) { let menu = {}; // 메뉴들을 조합으로 가져오는 함수 function combination(order, idx, len, prev) { if (prev.length === len) { let cur_key = prev.sort().join(""); if (cur_key in menu) { menu[cur_key] += 1; } else menu[cur_key] = 1; return; } for (let i = idx; i < order.length; i++) { combination(order, i + 1, len, [...prev, order[i]]); } } //orders를 처음부터 끝까지 반복하면..
2022.01.24 -
문제 이름 : 방문 길이 function solution(dirs) { // 길의 방향을 저장해둘 변수(중복을 제거 -> Set) let answer = new Set(); let [y, x] = [0, 0]; let dir = { U : [-1, 0], D : [1,0], L : [0,-1], R : [0,1] }; for(let i of dirs){ let dy = y + dir[i][0]; let dx = x + dir[i][1]; if(dy5 || dx5) continue; // Set 함수는 add로 값을 넣음 // 1번에서 2번으로 가는 경로와 2번에서 1번으로 가는 경로는 같기 때문에 // 두개 다 추가하기 answer.add(""+y+x+dy+dx); answer.add(""+dy+dx+y..
[Programmers] 방문 길이 문제 - (javascript)문제 이름 : 방문 길이 function solution(dirs) { // 길의 방향을 저장해둘 변수(중복을 제거 -> Set) let answer = new Set(); let [y, x] = [0, 0]; let dir = { U : [-1, 0], D : [1,0], L : [0,-1], R : [0,1] }; for(let i of dirs){ let dy = y + dir[i][0]; let dx = x + dir[i][1]; if(dy5 || dx5) continue; // Set 함수는 add로 값을 넣음 // 1번에서 2번으로 가는 경로와 2번에서 1번으로 가는 경로는 같기 때문에 // 두개 다 추가하기 answer.add(""+y+x+dy+dx); answer.add(""+dy+dx+y..
2022.01.22 -
문제 이름 : 프린터 function solution(p, l) { let answer = 0; // 가장 큰 수인지 확인을 위해 깊은복사한 후 내림차순으로 정렬 let comp = [...p].sort((a,b)=>b-a); while(true){ // p의 첫번째가 가장 큰 수이면 // 횟수를 1회 올리며, 현재 위치가 0(내가 뽑고자했던 것이 뽑히는 상황)이면 // 정답을 출력하고, 그 외에는 comp와 p를 하나씩 제외하고 l을 줄입니다. if(p[0] === comp[0]){ answer+=1; if(l === 0){ return answer; } comp.shift(); p.shift(); l--; }else{ p.push(p.shift()); l--; } // 위의 연산이 끝나면 l위치가 -..
[Programmers] 프린터 문제 - (javascript)문제 이름 : 프린터 function solution(p, l) { let answer = 0; // 가장 큰 수인지 확인을 위해 깊은복사한 후 내림차순으로 정렬 let comp = [...p].sort((a,b)=>b-a); while(true){ // p의 첫번째가 가장 큰 수이면 // 횟수를 1회 올리며, 현재 위치가 0(내가 뽑고자했던 것이 뽑히는 상황)이면 // 정답을 출력하고, 그 외에는 comp와 p를 하나씩 제외하고 l을 줄입니다. if(p[0] === comp[0]){ answer+=1; if(l === 0){ return answer; } comp.shift(); p.shift(); l--; }else{ p.push(p.shift()); l--; } // 위의 연산이 끝나면 l위치가 -..
2022.01.22