월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트 문제 풀기 전에 알고리즘 공부를 먼저 해야되나요?
코딩테스트 문제를 풀기 전에알고리즘 공부를 먼저해야 문제를 풀수 있나요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
내장함수를 사용하는 것과 구현하는 것에서 질문있습니다.
코딩 테스트를 하면서 궁금한 점이 생겨 질문드립니다.강사님께서는 동일한 작업을 찾기위해 for문을 사용하여 동일한 작업을 찾고 동일한 작업이 있는 경우에 해당 for문의 index를 pos값에 저장해주셨습니다.예전 같았으면 저도 강사님과 동일한 방법으로 풀겠지만 최근에 한 코딩테스트를 실시하는데 주어진 메서드를 굳이 구현해서 사용하는 것보다 주어진 메서드를 사용하는게 더 좋다는 글을 봤습니다. 예를 들어 index를 찾을 때 for문을 통해 찾는 것 보다 indexOf메서드를 사용 그래서 여러 커뮤니티에도 질문을 해봤지만 모두 다 비슷하게 지원하지 않는 내장함수일 경우에는 구현할 수 밖에 없지만 어지간하면 주어진 메서드를 사용하는게 더 좋다 라고 하는데 어떤 방법이 더 정답인지 모르겠습니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 반복문 없이 이렇게 작성해도 괜찮을까요?
function solution(m, arr) { let sum = (cases = 0); let i = (j = 0); while (j < arr.length) { if (sum + arr[j] < m) { sum += arr[j++]; continue; } else if (sum + arr[j] === m) { sum += arr[j++]; cases++; } sum -= arr[i++]; } return cases; }이중 반복문으로 처리하면 depth가 깊어지는 것 같아 while문 안에 또 while문을 쓰지는 않았습니다. 몇개의 테스트를 해봤을 때는 오류가 없는 것 같은데 혹시 놓친 부분이 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
쇠막대기 문제 질문이 있습니다..!
안녕하세요..! 개념적으로 강의를 듣고 로직으로는 쉽게 풀 수 있습니다. 하지만 개념없이 이 문제를 풀려면 어떻게 접근해야할지 감이 안오는 상황이에요 ㅠ. 혹시 접근 방법 같은게 있을까요? 아니면 암기식으로 문제를 풀어야 할까요? 스택 유형이라고 알고 접근해도.. 잘린 막대기가 stack에 남아있는 갯수라는 사고 라던지 이런 것들이 잘 안됩니다 ..ㅠㅠ
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 1. 기본문제 3번
<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(n){ let answer; let share; if (n === 0 ) answer = 0; if( n > 0 && n <= 12) answer = 1; else if ( n % 12 !== 0) { share = parseInt(n / 12); answer = share + 1; } return answer; } console.log(solution(0)); </script> </body> </html>위에 같이 문제를 해결하였는데 괜찮은 풀이인지 의견을 여쭤보고 싶습니다! 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
동전교환 응용문제 질문
선생님 섹션 8의 9번 동전교환 문제를 복습하면서 풀어보니 손에 익어서 이젠 풀 수 있게 되었습니다.여기서 문제를 변형시켜서 가장 적은 동전갯수를 반환하는게 아닌, 가장 작은 동전 갯수를 가진 동전 종류의 배열 (해당 문제의 경우 [5,5,5])를 반환하도록 문제를 풀고있는 중인데요.간단할 거 같았는데 의외로 잘 안풀리네요 ㅠㅠ 출력해보면서 이리저리 해보는데 접근 방법과 풀이를 알려주실 수 있을지 여쭙습니다.아래는 여태 작성한 제 코드입니다. let answer = Number.MAX_SAFE_INTEGER let len = arr.length let tmp = [] function DFS(L , sum){ if (sum > m) return if (L > answer) return if (sum === m) { answer = Math.min(answer, L) console.log(answer) console.log(tmp) tmp = [] } else { for (let i=0; i<len; i++){ DFS(L+1 , sum+arr[i]) if (!tmp.length || tmp.reduce((a,b)=>a+b) <= m) tmp.push(arr[i]) } } } DFS(0, 0) return answer } let arr=[1, 2, 5]; console.log(solution(15, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 시간복잡도 관련 질문이 있습니다~!
섹션 5-3 연속부분수열1 에서 for문 안에 while문이 중첩되어있는데 어떻게 시간복잡도가 O(n) 인지 궁금합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다 항상 감사합니다!
오랜만에 제 힘으로 풀어본 문제입니다해설과 달라서 코드리뷰 한번 부탁드리고자 글을 써 봅니다<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(k, arr) { let answer = 0; let sum = 0; for (let i = 0; i <= arr.length - k; i++) { sum = 0; for (let j = i; j < i + k; j++) { sum += arr[j]; } answer = Math.max(sum, answer); } return answer; } let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(3, a)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중for문이 더 모르겠어요..
앞선 강의를 들으니 max를 이용해서 문제가 풀렸는데,2중 for문을 이용한 경우 결과가 안나와요...조건은 만족하는데 i일때 j보다 큰 모든 경우에 푸쉬 되거나 카운팅이 되는데, 한번만 호출 되게 하는 방법이 궁금합니다. function solution(arr) { let answer = []; answer.push(arr[0]); for (let i = 1; i < arr.length; i++) { for (let j = 0; j < i; j++) { if (arr[i] > arr[j]) { answer.push(arr[i]); } } } return answer; } let arr = [130, 135, 148, 140, 145, 150, 150, 153]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
어떻게 푸는 것이 더 옳은 방법인가요?
문제를 보고 저는 최대한 간결하게 아래의 코드처럼 작성을 하였습니다.function solution(arr1, arr2) { const answer = [...arr1].concat(arr2).sort((a, b) => a - b); return answer; }그리고 해설을 봤더니 강사님은 포인터를 사용하셔서 작성해주셨는데 코딩테스트에서 이런 비슷한 유형의 문제가 나왔을 때 포인터와 같은 풀이를 사용해서 작성하는 것이 옳은 방법인가요? 아니면 최대한 빨리 간결하게 작성하는 것이 옳은 방법인가요?물론 지금은 배우는 단계이니 포인터를 사용하는것이 맞지만 실제 코딩 테스트에서는 어떤 방법이 더 권장되는지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if (answer === 'YES') return; 으로 해도 됩니당
.... function dfs(lv, sum) { if (answer === 'YES') return; // if (lv === n) { ...flag 선언 필요없이 저렇게 해주면 flag 선언한것과 동일하게 동작합니다. 디버깅 해서 콜스택 확인 해봤습니당
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
section 9-2 경로탐색(DFS-인접행렬)
안녕하세요! 강의 항상 잘 듣고 있습니다.2차원 행렬 생성 시 두가지 방법으로 알고 있었는데 위에 graph는 정상적으로 나오는데 graph1은 [[0, 1, 1, 1, 1, 1]*n+1] 식으로 밖에 안나옴니다.0으로 초기화 한 행렬은 같은 값이 나오는데 graph1은 왜 for문으로 인접행렬 생성 시 안되는지 궁금합니다let graph = Array.from(Array(n + 1), () => Array(n + 1).fill(0)); let graph1 = Array(n + 1).fill(Array(n + 1).fill(0));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
정렬의 차이가 답을 가르나요?
정렬을 하고 안하고 답의 오차가 발생하는데 정상적인 현상인가요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
조건 질문
안녕하세요! 질문이 있습니다.if (ch[i] === 0) {ch 배열을 만드는 것말고if (tmp.indexOf(arr[i])) {저는 이렇게 조건을 주었는데 안되더라구요! 왜 이 방법은 안되는지 궁금합니다..!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문있습니다!
안녕하세요 선생님 다름이 아니라 만약에 질문이 YES , NO가 아니라 합이 되는 집합의 원소를 각각 출력하는 거라면 코드를 어떤 식으로 짜야하는 지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS매개변수 그리고 for의 i
DFS의 else안에 for 루프에서 DFS의 매개변수를 g+1 로 하면 안되는 이유가 뭔가요? 답안에 있는 i+1과 같이 루프 시작점인 i의 값을 제한해주는 건 똑같아 보이는데요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
function solution(m, product){ let answer=0; let n=product.length; for(let i=0; i<n; i++){ let sortedSaledArr = product.slice().map((v,idx)=>{ if(idx===i) return [v[0]/2, v[1]]; return v; }).sort((a,b)=>a.reduce((p,c)=>p+c)-b.reduce((p,c)=>p+c)); let sum=0; for(let j=0; j<n; j++){ let updated = sum+sortedSaledArr[j].reduce((p,c)=>p+c); if(updated>m){ answer=Math.max(answer, j); break; } sum=updated; } } return answer; } let arr=[[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]]; console.log(solution(28, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
굳이 flag가 필요할까요?
제가 이해한 바로는 결국에는 L 은 arr.length 깊이만큼 들어가야 딱 계산이 완료되고 비교가 되는 거라고 이해했는데, 그 전에 끝나는 상황이 만들어 지지 않는 이상 flag의 유무가 굳이 필요한가 궁금합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다
function solution(total, arr) { let answer = 0; let m = arr.length let sum = []; let max = 0 for(let i=0; i<m; i++) { max = Math.max(max, arr[i][0]) //가장 비싼 상품 } for(let i=0; i<m; i++) { if(max === arr[i][0]) { arr[i][0] = max/2 //가장 비싼 상품 값을 반값으로 재할당 } sum.push(arr[i][0] + arr[i][1]) //상품값과 배송비를 더한 값으로 sum 배열 만듦 } sum = sum.sort((a,b)=>b-a) // 큰값이 먼저 오도록 정렬 let tl = sum.reduce((a, b) => {return a + b},0) // 총 값 while(tl > total) { // 총 값이 예산보다 많을때, 가장 비싼것부터 뺌 tl = tl - Math.max(...sum) sum.splice(0,1) m -- //상품 하나 뺄 때마다 배열 길이(5)에서 1씩 빼기 } answer = m return answer; } let arr=[[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]]; console.log(solution(28, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
안녕하세요 선생님, 강의 늘 잘 듣고 있습니다! 배운 알고리즘은 아니지만 나름대로 직접 풀어보려고 노력했는데,괜찮은 코드인지 반례는 없는지 궁금합니다!좋은 강의 항상 감사드립니다!function answer(s, t) { let answer = 0; let tmp = []; let len = t.length; for (let i = 0; i < len; i++) { tmp.push(s[i]); } t = t .split('') .sort((a, b) => (a < b ? -1 : 1)) .join(''); while (len < s.length) { let result = [...tmp]; let join = result.sort((a, b) => (a < b ? -1 : 1)).join(''); if (t === join) answer++; len++; tmp.shift(); tmp.push(s[len]); } return answer; }