월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
가운데 문자 출력 이렇게 풀어도 될까요?
function solution (str){ let strArr = str.split(""); let length = strArr.length; let answer = ''; answer = length/2 !== Math.round(length/2) ? strArr[Math.round(length/2)-1] : strArr[length/2 -1] + strArr[length/2]; return answer;} console.log(solution("good"));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 3, 숫자만 추출 문제(정답 확인 부탁 드립니다.)
안녕하세요 선생님 !섹션 3번 - 숫자만 추출 문제를 이렇게 풀어도 괜찮을지 확인 한번 부탁 드리겠습니다.그리고 혹시 이런 문제들의 경우 정규식 보다는 이렇게 탐색하고 푸는게 더 좋은 풀이 방식인건가요??<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(str){ let answer = ""; for(const a of str){ if(!isNaN(a)){ if(answer[0] !== undefined) answer += a; else if(a > 0) answer += a; } } return answer; } let str="g0en2T0s8eSoft"; console.log(solution(str)); </script> </body> </html>
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 2, 1,2차원 탐색(봉우리)
선생님 안녕하세요 문제를 푸는 과정에서 궁금한 점이 생겨서 질문 드립니다.먼저 저는 문제에서 힌트를 얻어 기존의 배열의 테두리에 0을 추가해주고 풀었습니다.근데 arr.push / arr.unshift를 통하여 배열 상하단에 [0,0,0,0,0]으로 된 배열을 추가하고 난 뒤배열 안의 arr[i]의 배열에도 push, shift를 통해 0을 추가해줬습니다. 이 과정에서 동일하게 for문을 진행했는데추가해준 첫번째, 마지막 배열의 길만 9개가 되는데 왜 그런지 이유를 잘 모르겠습니다.다른 배열들은 push, unshift가 한번씩만 된 거 같은데, 추가해준 배열만 2번씩 된 거 같습니다. 이유가 무엇인지 알 수 있을까요?? 제가 잘못한 부분이 있는걸까요??<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(arr){ let answer = 0; let newArr = new Array(arr.length).fill(0); arr.push(newArr); arr.unshift(newArr); for(let i=0;i<arr.length;i++){ arr[i].push(0); arr[i].unshift(0); } for(let i=0;i<arr.length;i++){ for(let j=0;j<arr[i].length;j++){ let res = arr[i][j]; if(i !== 0 && i !== arr.length - 1 && j !== 0 && j !== arr[i].length - 1){ if(res > arr[i+1][j] && res > arr[i-1][j] && res > arr[i][j+1] && res > arr[i][j-1]){ answer += 1; } } } } console.log(arr) return answer; } let arr = [ [5,3,7,2,3], [3,7,1,6,1], [7,2,5,3,4], [4,3,6,4,1], [8,7,3,5,2] ] console.log(solution(arr)) </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. const input = `15 BACBACCACCBDEDE`.split('\n'); let arr = input[1].split(''); function solution(arr){ let studentMap = new Map(); let winner = ''; let maxNum = 0; for(let i = 0; i < arr.length; i++){ studentMap.set(arr[i], studentMap.get(arr[i]) +1 || 1); } let studentArr = [...studentMap] studentArr.forEach(arr => { if(arr[1] > maxNum){ maxNum = arr[1]; winner = arr[0]; } }) return winner; } console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. const input = `10 3 12 15 11 20 25 10 20 19 13 15`.split('\n'); let M = Number(input[0].split(' ')[1]); let arr = input[1].split(' ').map(str => Number(str)); function solution(arr){ let sumArr = []; let sum = 0; for(let i = 0; i < M; i++){ sum += arr[i]; } sumArr.push(sum); for(let j = M; j < arr.length; j++){ sum += arr[j]; sum -= arr[j-M]; sumArr.push(sum); } return Math.max(...sumArr); } console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드도 괜찮을까요 ?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. const input = `5 5 1 3 1 2 3`.split("\n"); let M = Number(input[0].split(" ")[1]); let arr = input[1].split(" ").map((str) => Number(str)); function solution(arr) { let count = arr.filter((num) => num <= M).length; // 5 let p1 = 0; let p2 = 1; let sum = arr[p1] + arr[p2]; // 4 while (p1 !== p2) { if (sum < M) { count++; p2++; sum += arr[p2]; } else if (sum === M) { count++; sum -= arr[p1]; p1++; } else if (sum > M) { sum -= arr[p1]; p1++; } } return count; } console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드도 괜찮을까요 ?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업해주셨던 코드랑 다른건 없을까요 ? const input = `8 6 1 2 1 3 1 1 1 2`.split("\n"); let M = Number(input[0].split(" ")[1]); let arr = input[1].split(" ").map((str) => Number(str)); function solution(arr) { let p1 = 0; let p2 = 1; let sum = arr[p1] + arr[p2]; let count = 0; while (p2 < arr.length) { if (sum < M) { p2++; sum += arr[p2]; } else if (sum > M) { sum -= arr[p1]; p1++; } else if (sum === M) { sum -= arr[p1]; p1++; count++; } } return count; } console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
정렬을 꼭 해야하는 이유
정렬을 하고 안하고 정답이 다르게 나오는데 그 이유가 무엇인가요??완전 탐색이라 모든 경우를 탐색하는데 정렬을 해야하는 이유가 궁금합니다!!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
새로운 배열 만들때 질문입니다
안녕하세요, 선생님1) m 변수에 바로 arr 정렬해서 넣어서 원래 값과 비교하면 왜 답이 안나오는 걸까요..? function sol(arr){let ans =[];let m = arr.sort((a,b)=>a-b);for(let i = 0; i < arr.length; i++){if(arr[i] !== m[i]) ans.push(i+1);}return ans;}let m = [120, 125, 152, 130, 135, 135, 143, 127, 160];console.log(sol(m)); 2) let m = arr; arr.sort((a,b)=>a-b); 이렇게 했을때도 답이 안나오는 이유는 무엇일까요?slice()로 복사해야하는 이유가 있나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이진트리순회(DFS:깊이우선탐색)
안녕하세요 강사님!스택프레임을 그리면서, 전위순위는 console.log 가 맨위에 가야하고 중위순위는 가운데 가야하는거는 이해가 됩니다.그런데 이 문제에서 어떻게 접근 방식을 바로 재귀로 풀어야겠다 라고 생각나셨는지 근본적인 이유가 이해가 가지 않습니다 ㅜㅜ 강의 보면서 선생님께서 재귀로 푸시니까 재귀로 푸는데, 왜 재귀로 접근하게 되었는지가 이해가 안되는 것 같습니다 ㅜㅜ 아직 재귀함수를 제대로 이해하지 못한 채 뒷문제로 넘어가서 그런걸까요??해결답안을 외우는 건 할 수있는데, 어떻게 이 문제를 재귀로 접근하게 되었는지 근본적으로 떠오르지가 않는 것 같습니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요??
let solutions = (a,b,c) => {let numArr = [a,b,c]numArr.sort();return numArr[2] <= numArr[0] + numArr[1] ? 'YES' : 'NO'}
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런식으로 p1 p2를 안써도 괜찮을까요 ?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.바로 shift()로 빼주었는데 이래도 괜찮은걸까요 ? const input = `3 1 3 5 5 2 3 6 7 9`.split("\n"); let arr1 = input[1].split(" ").map((str) => Number(str)); let arr2 = input[3].split(" ").map((str) => Number(str)); function solution(arr1, arr2) { let answer = []; while (arr1.length && arr2.length) { if (arr1[0] < arr2[0]) { answer.push(arr1.shift()); } else { answer.push(arr2.shift()); } } while (arr1.length) { answer.push(arr1.shift()); } while (arr2.length) { answer.push(arr2.shift()); } return answer; } console.log(solution(arr1, arr2));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 확인 부탁드립니다.
function solution(m, product) { let answer = 0; let n = product.length; let cnt = 0; product.sort((a, b) => a[0] / 2 + a[1] - (b[0] / 2 + b[1])); // console.log(product); for (let i = 0; i < n; i++) { m = m - (product[i][0] / 2 + product[i][1]); cnt++; //console.log("cnt", cnt); if (product[i][0] + product[i][1] > m) break; answer = cnt; } return answer; } //콘솔에서는 cnt가 4로 나왔는데 답에서 3으로 출력이 됩니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 풀이도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 콘솔창엔 답이 나오긴 하는데 반례가 있나 싶습니다..! const input = `5 28 6 6 2 2 4 3 4 5 10 3`.split("\n"); function solution(input) { let totalMoney = Number(input.shift().split(" ")[1]); let inputNumArr = input .map((arr, index) => { if (index === input.length - 1) { return [Number(arr.split(" ")[0]) / 2, Number(arr.split(" ")[1])]; } else { return [Number(arr.split(" ")[0]), Number(arr.split(" ")[1])]; } }) .sort((a, b) => a[0] - b[0]); let count = 0; for (let i = 0; i < inputNumArr.length; i++) { let presentSum = inputNumArr[i].reduce((a, b) => a + b, 0); if (totalMoney - presentSum < 0) { break; } else { totalMoney -= presentSum; count++; } } return count; } console.log(solution(input));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 그대로 배열 가져올 경우 질문입니다.
안녕하세요 선생님, 강의 재밌게 듣고 있습니다.질문입니다.문제에서 [5,28](학생수,예산) 배열도 그대로 가져오면 코드가 어떻게 수정될까요? (처음 let arr에 추가 할 경우 말씀드립니다)i 와 j for문 돌때 1부터 시작하면 된다고 생각했는데, 답이 안나와서 질문드립니다!! function sol(m,arr){ let ans = 0; let n = arr.length; arr.sort((a,b)=>((a[0]+a[1])-(b[0]+b[1]))); for(let i = 1; i < n; i++){ let money = m - (arr[i][0]/2 + arr[i][1]); let cnt = 1; for(let j = 1; j < n; j++){ if(j !== i && arr[j][0]+arr[j][1] > money) break; if(j !== i && arr[j][0]+arr[j][1] <= money){ money -= (arr[j][0]+arr[j][1]); cnt++; } } ans = Math.max(ans, cnt) } return ans;}let arr= [[5,28],[6,6],[2,2],[4,3],[4,5],[10,3]];console.log(sol(28,arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 푸는건 잘못됐나요?
function solution(str){ while(str.includes("()")){ str= str.replace('()','') } console.log(str) return str.length >=1 ? 'NO' : 'YES'; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
function solution(target, arr) { let start = 0; let end = arr.legnth-1; let mid = Number.parseInt((start+end)/2); arr.sort((a,b)=>a-b); while(arr[mid]!==target){ if(arr[mid] > target) end = mid-1; else start = mid+1; mid = Number.parseInt((start+end)/2); } return mid+1; } 안녕하세요 강사님 이분검색 문제 풀이 방법에 대해 궁금증이 생겨 질문 남깁니다.문제 설명만 보고 혼자 풀어본건데 혹시 반례가 있을까요..? 이렇게 풀어도 괜찮을까요? 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섬나라 아일랜드 문제 (DFS) - 12분 50초 의문
안녕하세요.섬나라 아일랜드 문제 설명 중 12:50 쯤, 브라우저 콘솔에 찍힌 dx,dy 값에 대응되는 좌표를 문제의 보드위에 동그라미 해주셨는데요, 그 순서가 (1,2) 부터 잘못되지 않았나싶어서요.이상입니다. 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 되는 건지 여쭤보고 싶습니다!
항상 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 드립니다 !!
저는 check 배열을 사용하지 않고 재귀함수를 탈 때마다 tmp에 포함된 원소를 제외한 배열을 함께 보내서 답을 구하는 식으로 아래 코드를 구현했습니다!!이렇게 구현한다면 강사님의 코드와 비교했을 때 시간이 오래 걸린다던가 하는 문제가 있을까요??function solution(arr, n) { let answer = []; let tmp = Array.from({ length: n }, () => 0); function DFS(L, arr) { if (L === n) { answer.push(tmp.slice()); } else { for (let x of arr) { tmp[L] = x; let duplArr = arr.slice(); duplArr.splice(duplArr.indexOf(x), 1); DFS(L + 1, duplArr); } } } DFS(0, arr); return answer; }